BÀI 4 : Model trong CodeIgniter

BÀI 4 : Model trong CodeIgniter

Trong mô hình MVC  chúng ta đã tìm hiểu  Controller và View của  CodeIgniter, hôm nay chúng ta sẽ tìm hiể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 mọi người  truy cập vào application/config/database.php ,trong đây mọi người  cần quan tầm tới đoạn cấu hình sau:

$db[‘default’][‘hostname’] = ‘localhost’;

$db[‘default’][‘username’] = ‘root’;

$db[‘default’][‘password’] = ”;

$db[‘default’][‘database’] = ‘vietpro_ci’;

Đây là cấu hình khi chúng ta  đang chạy trên localhost (Nếu  sử dụng Xampp  mặc định username=’root’ , password = ”) và tên CSDL  .

– 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

– Mọi người  truy cập vào application/models tạo file có tên là m_user.php với nội dung:

class M_User extends CI_Model {

public function __construct()

{

parent::__construct();

$this->load->database();

}

}

Giống với controller, khi tạo lớp M_User thì kí tự đầ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ì ta  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ụ: Mọi người truy cập vào application/models tạo file có tên là m_user.php với nội dung:

class M_User 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(“M_User “);

//su dung phuong thuc get_list trong m_user

$list = $this->m_user ->get_list();

}

}

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

Chú ý : có thể tham khảo cách viết nối câu truy vấn với Method chaining  ở cuối bài .

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 dữ  liệu muốn lấy”,”Vị trí”);

e.Lấy nhiều 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 M_User 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",luonghop.lc@gmail.com); //điều kiện

$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("tb_user"); //lấy dữ liệu từ bảng tb_user

return $query->result();    //trả về 1 mảng các đối tượng

}

}

 

ệ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(

‘username’ => ‘chickensociu’,

’email’ => ‘luonghop.lc@gmail.com’

);

$this->db->insert(“tb_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(

‘username’ => ‘steve_luong’,

’email’ => ‘luonghop.it@gmail.com’

);

$this->db->where(“id”,“1″);

$this->db->update(“tb_user”,$data);

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(“tb_user”);

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

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

 

Các query helper hay dùng

$this->db->insert_id()

+ Trả về id của bản ghi vừa mới được thêm vào .

$this->db->affected_rows()

+ Trả về số bản ghi bị thay đổi (Số bản ghi được thêm , được sửa , bị xoá …)

$this->db->count_all();

+ Trả về số tổng số bản ghi trong 1 bảng .

$this->db->platform()

+ Trả về flatform của CSDL đang dùng (MySQL, MS SQL, Postgres, ..)

$this->db->version()

+ Trả về phiên bản của hệ quản trị CSDL đang sử dụng

$this->db->last_query();

+ Trả về câu truy vấn  mới nhất vừa được thực hiện

 

Lưu ý : để show ra tất cả thông tin về câu truy vấn , tốc độ xử lý … Ta sử dụng phương thức sau :

$this->output->enable_profiler(TRUE);

 

Nối câu truy vấn trong CI với PHP5

 

Method chaining  cho phép chúng ta viết nối câu truy vấn với PHP 5 .

Ví dụ như sau :

$query=$this->db->select(’email’)-> where(‘id’, $id)->limit(10, 20) ->from(‘tb_user’)->get();

 

EX : Model cho phần quản lý bài viết

 

 q

 

 

 

 

 

 

//Thêm vài viết

qq

 

//Xuất bản bài viết

qqq

Hai thẻ thay đổi nội dung bên dưới.
Chia sẻ kiến thức, kinh nghiệm liên quan đến lập trình và thiết kế website là niềm vui của mình. Nếu có câu hỏi hay thắc mắc làm thế nào để làm website bán hàng, giới thiệu công ty thì liên hệ mình nhé. SĐT 01632 434 165, Mình sẽ hỗ trợ hết sức có thể. Thân Ái và Quyết Thắng

Ý kiến của bạn

Fanpage Facebook
Danh mục
Lưu trữ
Bài giảng mới

Call Now