非常教程

Codeigniter 3参考手册

用户指南 | User guide: General

模块 | 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类中。
  • 您可以通过第三个参数传递TRUE(布尔值)来告诉模型加载方法自动连接,并使用数据库配置文件中定义的连接设置:$ this-> load-> model('model_name', '',TRUE);
  • 您可以通过第三个参数手动传递数据库连接设置:$ 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('model_name','',$ config);
Codeigniter 3

CodeIgniter 是一个PHP MVC框架,特点是超轻量级、有数据加密、有灵活URI路由等。对于 PHP 程序员来说,它小巧但功能强大。

主页 https://codeigniter.com/
源码 https://github.com/bcit-ci/CodeIgniter
版本 3
发布版本 3.1.5