Hướng dẫn sử dụng Model trên CodeIgniter

Tương tác với Database là điều không thể thiếu trên mọi hệ thống. Trên CodeIgniter thì việc này thường được đặt trong Model. Trong bài này mình xin trình bày cách sử dụng Model trên CodeIgniter để lấy dữ liệu từ Database, sau đó sẽ đẩy cho một Controller rồi đưa ra View tương ứng.

Các công cụ cần thiết.

Chúng ta sẽ tìm hiểu việc sử dụng Model trên CodeIgniter bằng một ví dụ cụ thể dưới đây.

1. Tạo một mô-đun modelUsing.

Đầu tiên chúng tạo một mô-đun tên là modelUsing trong thư mục modules.

Sau đó ta tiếp tục tạo các thư mục con và các file tương ứng trong thư mục modelUsing như sau:

  • controllers - modelUsing.php : Controller của mô-đun modelUsing
  • models - modelUsing_model.php : Model tương ứng của mô-đun modelUsing, chú ý các bạn phải có hậu tố model trong file php để CodeIgniter hiểu được.
  • views - modelUsing-template.php : View tương ứng của mô-đun modelUsing.

Hướng dẫn sử dụng Model trên CodeIgniter

2. Viết code cho từng thành phần controller-model-view.

Ta mở file modelUsing.php trong thư mục controllers của mô-đun modelUsing bằng notePad++ và copy đoạn code ở dưới vào.

<?php 
	class ModelUsing extends CI_Controller{
		
		public function __construct(){
			parent::__construct();
			
			#Load library and helper
			$this->load->model(array('modelUsing_model'));
		}

		public function index(){
			# Lấy thông tin từ Model
			$a_AllUserInfo = $this->modelUsing_model->a_fGetAllUserInfo();
			
			$a_Data = array();
			$a_Data['a_Data'] = $a_AllUserInfo;
			$a_Data['sz_Message'] = 'Hiển thị thông tin người dùng';
			
			# Truyền dữ liệu ra view
			$this->load->view('modelUsing-template', $a_Data);
		}
	}

Giải thích cho đoạn code ở trên:

  • Đoạn $this->load->model(array('modelUsing_model')) đây chính là lời gọi Model mà ta cần sử dụng. Các bạn lưu ý rằng chúng ta nên gọi Model ở trong hàm __construct, vì trong chương trình của chúng ta thường có nhiều hàm và thường dùng chung Model. Khi đặt lời gọi Model trong hàm __construct thì ta chỉ gọi một lần. Tránh việc lặp đi lặp lại lời gọi Model ở từng hàm.
  • Đoạn $this->modelUsing_model->a_fGetAllUserInfo() đây là đoạn ta truy cập đến một hàm tương ứng ở trong Model mà ta đã tạo. Ta thường dùng cách này để lấy dữ liệu từ Model.

Ta tiếp tục mở file modelUsing_model.php và copy đoạn code sau đây vào.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class ModelUsing_model extends CI_Model{
	
	/* Gán tên bảng cần xử lý*/
	private $_name = 'ci_user';
	
	function __construct(){
        parent::__construct();
    } 
    
    /**
     * Get all users in DB
     * @param null
     * @return array
     */
    function a_fGetAllUserInfo(){
    	# Câu lệnh truy vấn vào bảng đã định nghĩa ở trên
    	$a_Users = $this->db->select(array('name', 'email', 'address'));
    	$a_Users = $a_Users->get($this->_name);
    	$a_Users = $a_Users->result_array();
    	return $a_Users;
    }
}

Giải thích đoạn code trên:

  • Đoạn private $_name = 'ci_user' ta dùng để lưu tên một bảng mà ta cần sử dụng. Việc lưu trữ này giúp ta tránh lặp lại nhiều lần việc gọi tên bảng trong câu truy vấn.
  • Đoạn $this->db->select(array('name', 'email', 'address')) ta dùng để lựa chọn thông tin trong bảng tương ứng cần lấy ra.
  • Đoạn $a_Users->get($this->_name) ta dùng để xác định tên bảng mà ta định nghĩa ở trên bằng biến $_name để truy vấn dữ liệu.
  • Đoạn $a_Users->result_array() ta dùng để lấy dữ liệu trả về, hàm result_array() sẽ trả về dữ liệu trong một mảng.
  • Đoạn return $a_Users dùng để trả lại dữ liệu cho hàm.

Tiếp theo ta mở file modelUsing-template.php trong thư mục views và copy đoạn code sau đây vào.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>Title | Hướng dẫn sử dụng Model trên CodeIgniter</title>
</head>
<body>
	<div style="align:center;">
		<h2>Hướng dẫn sử dụng Model trên CodeIgniter</h2>
		<p><?php echo $sz_Message;?></p>
		<table border="1" width="500">
			<thead style="font-weight: bold;">
				<td>STT</td>
				<td>Tên User</td>
				<td>Hòm thư</tD>
				<td>Địa chỉ</td>
			</thead>
			<?php foreach ($a_Data as $i_key => $a_User) {?>
				<tr>
					<td><?php echo $i_key+1;?></td>
					<td><?php echo $a_User['name'];?></td>
					<td><?php echo $a_User['email'];?></td>
					<td><?php echo $a_User['address'];?></td>
				</tr>	
			<?php }?>
		</table>
	</div>
</body>

Trong file modelUsing-template.php ta chỉ đưa dữ liệu đã truy vấn được từ Model ra ngoài.

3. Điều hướng lại file routes.php

Ta mở file routes.php trong thư mục config và copy đoạn code sau đây vào

// model using
$route['model-using'] 	= "modelUsing/index";

4. Chạy chương trình trên trình duyệt.

Dưới đây là kết quả của chương trình ngoài trình duyệt.

Hướng dẫn sử dụng Model trên CodeIgniter

Các file đính kèm.

huong-dan-su-dung-model-tren-codeigniter.zip

Chúc các bạn thành công :)

Tags: