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);
用户指南 | User guide: General相关
CodeIgniter 是一个PHP MVC框架,特点是超轻量级、有数据加密、有灵活URI路由等。对于 PHP 程序员来说,它小巧但功能强大。
主页 | https://codeigniter.com/ |
源码 | https://github.com/bcit-ci/CodeIgniter |
版本 | 3 |
发布版本 | 3.1.5 |