Codeigniter 3

模块 | 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类中。