Nội dung bài viết:
·
Model
là gì?
·
Giải
phẫu 01 Model
·
Tải
Model
·
Tự
động tải Models
·
Kết
nối cơ sở dữ liệu
Models là các lớp PHP được thiết kế để làm việc với
thông tin trong cơ sở dữ liệu. Ví dụ ta dùng CodeIgniter để xây dựng 01 trang blog.
Bạn có thể tạo 01 lớp model chứa các hàm dùng chèn, cập nhật, và nhận dữ liệu
của blog. Sau đây là 01 ví dụ về 01 lớp model:
class
Blog_model extends
CI_Model {
public $title;
public $content;
public $date;
public function get_last_ten_entries()
{
$query
= $this->db->get('entries',
10);
return $query->result();
}
public function insert_entry()
{
$this->title = $_POST['title'];
// xem ghi chú phía dưới
$this->content = $_POST['content'];
$this->date = time();
$this->db->insert('entries',
$this);
}
public function update_entry()
{
$this->title = $_POST['title'];
$this->content = $_POST['content'];
$this->date = time();
$this->db->update('entries',
$this, array('id'
=> $_POST['id']));
}
}
Ghi chú
+Các phương thức trong ví dụ trên dùng nằm trong bộ các phương thức xử lý cơ sở dữ liệu Query Builder
+Để cho đơn giản hóa, trong ví dụ trên chúng ta dùng $_POST trực tiếp. Điều này là không nên, tốt hơn hết là chúng ta nên dùng Thư Viện Input dạng như vầy: $this->input->post('title').
+Các phương thức trong ví dụ trên dùng nằm trong bộ các phương thức xử lý cơ sở dữ liệu Query Builder
+Để cho đơn giản hóa, trong ví dụ trên chúng ta dùng $_POST trực tiếp. Điều này là không nên, tốt hơn hết là chúng ta nên dùng Thư Viện Input dạng như vầy: $this->input->post('title').
Các lớp Model được lưu ở thư mục application/models/
. Chúng có thể được tổ chức lại kiểu phân cấp thư mục.
Kiểu khai báo của 01 lớp model là như vầy:
class
Ten_model extends
CI_Model {
}
Ten_model chính là tên
lớp của bạn. Tên lớp phải có Hoa đầu từ , các từ còn lại viết thường. Và 01
điều nữa là lớp của bạn phải kế thừa từ lớp Model cơ sở của CodeIgniter.
Tên tập tin phải trùng với tên lớp. Lấy ví dụ lớp
của bạn như vầy:
class
User_model extends
CI_Model {
}
Tên tập tin sẽ như vầy:
application/models/User_model.php
application/models/User_model.php
Các models của bạn thông thường sẽ được tải và được
gọi từ trong các phương thức controller. Để tải 01 model
, ta dùng phương thức sau:
$this->load->model('ten_model');
Nếu model của bạn đặt trong 01 thư mục con->đặt
tên thư mục con chứa model kèm theo tên model. Ví dụ nếu bạn có 01 model tại
thư mục application/models/blog/Queries.php bạn sẽ tải nó bằng câu lệnh
như vầy:
$this->load->model('blog/queries');
Khi đã tải rồi, bạn sẽ truy cập các phương thức
trong model bằng cách sử dụng 01 đối tượng với tên trùng tên lớp của bạn:
$this->load->model('ten_model');
$this->model_name->method();
Nếu bạn muốn gắn model của bạn với 01 tên đối tượng
khác bạn có thể xác định lại thông qua tham số thứ 02 khi trong phương thức tải
model:
$this->load->model('ten_model',
'foobar');
$this->foobar->method();
Đây là ví dụ 01 controller tải 01 model, sau đó đưa
lên view:
class
Blog_controller extends
CI_Controller {
public function blog()
{
$this->load->model('blog_model');
$data['query']
= $this->blog->get_last_ten_entries();
$this->load->view('blog',
$data);
}
}
Nếu bạn nhận ra rằng mình cần 01 model riêng biệt
xuyên suốt ứng dụng, bạn có thể bảo CodeIgniter tự động tải model này trong qua
trình hệ thống tiến hành khởi tạo. Để làm điều này ta vào đây: application/config/autoload.php
và thêm model vào mảng autoload.
Khi 01 model được tải nó KHÔNG kết nối tự động đến cơ sở dữ liệu. Các tùy chọn kết nối sau
đã có sẵn:
· Bạn có thể kết nối bằng cách dùng các phương thức xử lý cơ sở dữ liệu tiêu chuẩn được mô tả trong: user_guide/database/connecting.html , không phải nằm trong lớp Controller và cũng không nằm trong lớp Model.
· Bạn có thể kết nối bằng cách dùng các phương thức xử lý cơ sở dữ liệu tiêu chuẩn được mô tả trong: user_guide/database/connecting.html , không phải nằm trong lớp Controller và cũng không nằm trong lớp Model.
·
Bạn
có thể bảo model tải phương thức auto-connect bằng cách truyền giá trị TRUE
(boolean) thông qua tham số thứ 3, và các thiết lập kết nối đã định sẵn trong
tập tin cấu hình cơ sở dữ liệu sẽ được dung:
$this->load->model('ten_model',
'', TRUE);
·
Bạn
có thể truyền thủ công các thiết lập cơ sở dữ liệu thông qua tham số thứ 03 khi
dùng phương thức tải model:
$config['hostname']
= 'localhost';
$config['username']
= 'myusername';
$config['password']
= 'mypassword';
$config['database']
= 'mydatabase';
$config['dbdriver']
= 'mysqli';
$config['dbprefix']
= '';
$config['pconnect']
= FALSE;
$config['db_debug']
= TRUE;
$this->load->model('ten_model',
'', $config);
+Các tập tin đã tạo trong bài viết này:
·
application/models/Blog_model.php
·
application/controllers/Blog_controller.php
+Các tập tin đã sửa trong bài viết này:
·
application/config/autoload.php
Nếu vẫn chưa rõ các bạn xem thêm video clip sau:
By #tiensim
Nguồn: User Guide – General Topics
Không có nhận xét nào:
Đăng nhận xét