14/12/16

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 và 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:
1
2
3
4
$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:
1
$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:
1
2
3
4
5
6
7
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:
1
$this->load->model("Tên_Model");
– Để gọi 1 phương thức trong model ta sử dụng
1
$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:
1
2
3
4
5
6
7
8
9
10
11
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:
1
2
3
4
5
6
7
8
9
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:
1
$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:
1
$this->db->select("*");
b.Truy vấn với điều kiện:
1
$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
1
$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 đó:
1
$this->db->order_by("tên cột asc hoặc desc");
+ Hoặc
1
$this->db->order_by("tên cột”,”asc hoặc desc");
d.Giới hạn kết quả trả về:
1
$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
1
$query->result_array();
+ Dữ liệu trả về dạng đối tượng sử dụng
1
$query->result();
f.Lấy 1 record trong dữ liệu:
+ Dữ liệu trả về dạng mảng sử dụng
1
$query->row_array();
+ Dữ liệu trả về dạng đối tượng sử dụng
1
$query->row();
g.Đếm số dòng dữ liệu trả về:
+ Dữ liệu trả về dạng mảng sử dụng
1
$query->num_rows();
Ví dụ tổng hợp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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:
1
$this->db->insert("tên bảng","mảng dữ liệu");
+ Ví dụ:
1
2
3
4
5
$data array(
        'name' => 'Nobitacnt',
        'email' => 'hoangvantuyencnt@gmail.com'
);
$this->db->insert("user",$data);

Cập nhật dữ liệu

+ Cú pháp:
1
$this->db->update("tên bảng","mảng dữ liệu");
+ Ví dụ:
1
2
3
4
5
6
$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:
1
$this->db->delete("tên_bảng");
+ Ví dụ:
1
2
$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

1
$this->db->query("Câu query");
Bạn đang đọc bài viết Model trong CodeIgniter tại Website: Học Lập Trình

0 nhận xét: