/ / Codeigniter / Comment (0)

Model trong CodeIgniter

Ở bài trước mình đã giới thiệu cho các bạn 2 thành phần trong mô hình MVC đó là Controller View trong CodeIgniter,hôm nay mình sẽ giới thiệu sang thành phần thứ 3 đó chính là Model trong CodeIgniter.

– Model là tầng xử lý những tác vụ liên quan đến tương tác cơ sở dữ liệu từ những yêu cầu của controller.

– Cấu hình thông tin kết nối CSDL các bạn truy cập vào application/config/database.php ,trong đây các bạn cần quan tầm tới cho mình đoạn cấu hình sau:

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = ‘php';

Đây là cấu hình khi mình đang chạy trên localhost (mình sử dụng Xampp lên mặc định username=’root’ , password = ”) và tên CSDL của mình là php,các bạn cần cấu hình cho chính xác với dự án của các bạn nhé.

– Muốn kết nối với CSDL. Chúng ta chỉ việc gọi phương thức:

$this->load->database();

Tạo 1 model đầu tiên

– Các bạn truy cập vào application/models tạo file có tên là user_mode.php với nội dung:

class User_model extends CI_Model {
      public function __construct()
      {
         parent::__construct();
         $this->load->database();
      }
}
  • Giống với controller, khi tạo lớp User_model thì chứ đầu tiên chúng ta phải viết hoa.
  • Mọi model phải được kế thừa từ CI_Model
  • Tên Model không được giống với tên controller,và tên class và tên file model phải giống nhau, tên file viết thường
  • Nếu trong model sử dụng hàm khởi tạo __construct() thì bạn cần thêm parent::__construct(); để kế thừa từ CI_Model (tránh bị ghi đè)
  • Đê kết nối tới csdl ta sử dụng phương thức $this->load->database();

Sử dụng Model trong CodeIgniter

– Để gọi 1 file model nào đó ta sử dụng cú pháp:

  $this->load->model("Tên_Model");

– Để gọi 1 phương thức trong model ta sử dụng

  $this->Tên_Model >ten_phuong_thuc();

– Ví dụ: Các bạn truy cập vào application/models tạo file có tên là user_mode.php với nội dung:

class User_model extends CI_Model {
      public function __construct()
      {
         parent::__construct();
         $this->load->database();
      }
      public function get_list()
      {
          return array();
      }
}

Tại controller User các bạn sử dụng model như sau:

class User extends CI_Controller {
      public function index()
      {
          //load model
          $this->load->model("user_model");
          //su dung phuong thuc get_list trong user_model
          $list = $this->user_model->get_list();
      }
}

Thao tác liệt kê và nhận trả dữ liệu

a.Lựa chọn tên cột cần lấy:

$this->db->select("tên cột 1, tên cột 2"); 

+ Nếu lấy hết các cột sử dụng:

$this->db->select("*");

b.Truy vấn với điều kiện:

$this->db->where("tên cột","Giá trị");

+ Hoặc có thể sử dụng 1 mảng các điều kiện

$this->db->where(array("tên cột"=>"Giá trị“));

c.Sắp xếp kết quả trả về theo 1 trường nào đó:

$this->db->order_by("tên cột asc hoặc desc");

+ Hoặc

$this->db->order_by("tên cột”,”asc hoặc desc");

d.Giới hạn kết quả trả về:

$this->db->limit("Số dòng du liệu muốn lấy","Vị trí");

e.Lấy tất cả record từ câu truy vấn:
+ Dữ liệu trả về dạng mảng sử dụng

$query->result_array();

+ Dữ liệu trả về dạng đối tượng sử dụng

$query->result();

f.Lấy 1 record trong dữ liệu:
+ Dữ liệu trả về dạng mảng sử dụng

$query->row_array();

+ Dữ liệu trả về dạng đối tượng sử dụng

$query->row(); 

g.Đếm số dòng dữ liệu trả về:
+ Dữ liệu trả về dạng mảng sử dụng

$query->num_rows(); 

Ví dụ tổng hợp:

class User_model extends CI_Model {
      public function __construct()
      {
         parent::__construct();
         $this->load->database();
      }
      public function get_list()
      {
        $this->db->select(‘*’);  //lấy tất cả thông tin
        $this->db->where(“email",“php@gmail.com");  //điều kiện email = php@gmail.com
        $this->db->order_by("id”,”desc"); //sắp xếp dữ liệu theo ID (id lớn tới nhỏ)
        $this->db->limit(5,0);  //lấy 5 thành viên, từ thành viên có vị trí đầu tiên
        $query=$this->db->get("user"); //lấy dữ liệu từ bảng user
        return $query->result();    //trả về 1 mảng các đối tượng
      }
}

– Với ví dụ tổng hợp phía trên chúng ta có thể diễn giải bằng lời như sau :”Lấy toàn bộ thông tin 5 thành viên mới nhất từ bảng user với điều kiện email = php@gmail.com”

Thao tác thêm, xóa, sửa dữ liệu

Thêm dữ liệu

+ Cú pháp:

$this->db->insert("tên bảng","mảng dữ liệu");

+ Ví dụ:

$data = array(
        'name' => 'Nobitacnt',
        'email' => 'hoangvantuyencnt@gmail.com'
);
$this->db->insert("user",$data);

Cập nhật dữ liệu

+ Cú pháp:

$this->db->update("tên bảng","mảng dữ liệu");

+ Ví dụ:

$data = array(
        'name' => 'Nobitacnt',
        'email' => 'hoangvantuyencnt@gmail.com'
);
$this->db->where("id",“1");
$this->db->update("user",$data);

Với ví dụ trên chúng ta đang thực hiện cập nhật thông tin cho thành viên có id = 1,nếu các bạn không có thêm điều kiện thì tất cả các thành viên sẽ bị cập nhật thông tin này,lên các bạn cần chú ý điều kiên này nhé.

Xóa dữ liệu

+ Cú pháp:

$this->db->delete("tên_bảng"); 

+ Ví dụ:

$this->db->where("id",“1");
$this->db->delete("user");

Với ví dụ trên chúng ta đang thực hiện xóa thành viên có id = 1,nếu các bạn không có thêm điều kiện thì tất cả các thành viên sẽ bị xóa,lên các bạn cần chú ý điều kiên này nhé.

Câu truy vấn bình thường thông

$this->db->query("Câu query");


Xem thêm video Tìm hiểu về Models trong CodeIgniter framework 3.x



05/09/2014
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL