模块 | Models
Models
对于那些想要使用更传统的MVC方法的人来说,模型是可选的
。
页面内容
- 楷模
什么是模型?
模型是PHP类,用于处理数据库中的信息。例如,假设您使用CodeIgniter来管理博客。您可能有一个模型类,它包含插入,更新和检索博客数据的函数。这是一个这样的模型类可能是什么样子的例子:
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']; // please read the below note
$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'])
}
}
注意
上例中的方法使用查询生成器数据库方法。
注意
为了简单起见,我们$_POST直接使用这个例子。这通常是不好的做法,更常用的方法是使用输入库$this->input->post('title')。
一个模型的解剖
模型类存储在您的应用程序/模型/
目录中。如果您需要这种类型的组织,它们可以嵌套在子目录中。
模型类的基本原型是这样的:
class Model_name extends CI_Model {
public function __construct()
{
parent::__construct(
// Your own constructor code
}
}
其中Model_name
是您班级的名称。类名必须
带有大写字母的第一个字母,其余的名称必须
小写。确保你的类扩展了基类模型类。
文件名必须与类名匹配。例如,如果这是你的类:
class User_model extends CI_Model {
public function __construct()
{
parent::__construct(
// Your own constructor code
}
}
你的文件将是这样的:
application/models/User_model.php
加载模型
您的模型通常会从您的控制器方法中加载和调用。要加载模型,您将使用以下方法:
$this->load->model('model_name'
如果您的模型
位于子目录中,请包含模型
目录中的相对路径。例如,如果您的模型
位于application / models / blog / Queries.php中,
您将使用以下命令加载模型
:
$this->load->model('blog/queries'
一旦加载,您将使用与您的类同名的对象访问您的模型方法:
$this->load->model('model_name'
$this->model_name->method(
如果您希望将模型分配给不同的对象名称,则可以通过加载方法的第二个参数指定它:
$this->load->model('model_name', 'foobar'
$this->foobar->method(
这是一个控制器的例子,它加载一个模型,然后提供一个视图:
class Blog_controller extends CI_Controller {
public function blog()
{
$this->load->model('blog'
$data['query'] = $this->blog->get_last_ten_entries(
$this->load->view('blog', $data
}
}
自动加载模型
如果您发现整个应用程序需要全局特定模型,则可以告诉CodeIgniter在系统初始化期间自动加载它。这是通过打开application / config / autoload.php
文件并将模型添加到自动载入数组来完成的。
连接到你的数据库
当一个模型被载入它不
自动连接到你的数据库。您可以使用以下连接选项:
- 您可以使用此处描述的标准数据库方法进行连接,无论是从Controller类还是Model类中。