CodeIgniter 示例读取新闻条目 - 创建你的数据模型

数据库的运算并不是在控制类中进行的,而是在数据模型中,这样他们就可以在后面很容易地被反复使用。数据模型就是对你的数据库或其他数据存储方式进行取回、插入和更新的地方,它们的功能是展示你的数据(They represent your data)。

打开 application/models 文件夹新建一个文件 news_model.php ,代码如下。确保你已经按照 这里的说明配置了自己的数据库并且数据库服务器与PHP.ini有相应配置。[code]<?php
class News_model extends CI_Model {

public function __construct()
{
$this->load->database();
}
}[/code]这段代码和早前写过的控制器的代码类似。它创建了一个继承 CI_Model 的数据模型,并用来载入数据库。通过 $this->db 对象就可以使用数据库类了。

在对数据库进行查询前,我们要先建一个数据表。连接你的数据库并执行下面的 SQL 命令,并在里面加些内容。CREATE TABLE news ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(128) NOT NULL, slug varchar(128) NOT NULL, text text NOT NULL, PRIMARY KEY (id), KEY slug (slug) );现在数据库和数据模型都设置好了,我们需要一个方法来把我们的文章从数据库中读取出来。数据库抽象层已经包含在CodeIgniter的 Active Record模式 中了。

这样可以确保只写一次查询就可以应用到 所有的数据库系统上。在你的数据库模型中添加如下代码。[code]public function get_news($slug = FALSE){
if ($slug === FALSE)
{
$query = $this->db->get(‘news’);
return $query->result_array();
}

$query = $this->db->get_where(‘news’, array(‘slug’ => $slug));
return $query->row_array();
}[/code]通过上面的代码可以实现两个不同的查询,你可以得到所有的新闻纪录,也可以通过 slug得到某一篇新闻。

你可能注意到了 $slug 变量在查询前并没有被检验过(sanitized),因为Active Record类已经把这个工作做完啦。