ActiveRecord和CodeIgniter 数据库类(CI 3)

作者 FarLee 2010年5月10日 23:04:03   ‖浏览(11,416)

CodeIgniter 附带了快速且功能强大的数据库类database class,同时支持传统结构数据库和ActiveRecord模式。CI数据库函数语法非常简单清晰。

对于如Mysql等类型数据库的传统结构架构,可能我们都比较熟悉。那么Active Record是什么?Active Record模式Mysql数据库有什么特征,CodeIgniter 如何使用Active Record关系数据库。

ActiveRecord pattern是什么

1. ActiveRecord 是关系型数据库中储存数据的一种设计模式pattern,也就是数据库database中访问数据的一种方式。

2. Active Record中每一个数据库表对应于一个类 class,数据表中的每一行记录对应于每一个对象实例。创建一个实例对象之后,一个新的行会插入到上面的保存的数据表中。当对象更新update之后,数据表中相应的行也会update。

3. Active Record这种设计模式通常在对象关系映射(ORM:Object Relational Mapping),解决了面向对象和关系数据库之间的互相匹配和映射的问题。

Active Record如何使用

1. 现在很流行的 Ruby on rail 这个Ruby 开发框架中,Ruby 类库很好地完善了ORM 设计模式。它从逻辑和数据统一的对象和数据表中创建了持久性域名模块,Active Record 继承并配合了这种设计模式。ActiveRecord也是Ruby on Rail Web开发MVC框架中默认的模块组件,也是其他Ruby应用中独立的ORM 包。

2. 上面说的Ruby,那么在PHP中,许多开源的PHP MVC 框架都附带了自己的ORM 启用ActiveRecord设计模式。比如我们CakePHP,Kohana 3,以及远方博客这里接着详细介绍的CodeIgniter。

Active Record in CodeIgniter Datebase

在CodeIgniter (CI)中,要启用 Active Record首先要在配置文件中 application/config/database.php 设置:$active_record = TRUE;。如果使用传统的结构数据库架构,那么可以设置ActiveRecord为FALSE,以减少服务器的处理请求。

CI 框架中使用 Active Record 类功能强大,几乎覆盖了所有的数据库操作,如取回、插入、编辑/更新数据库信息,而且只需短短几行脚本代码。CodeIgniter用户手册中以Mysql数据库为例,说明了结构数据库中常用的数据库查询语句是如何用ActiveRecord实现的。以下选取了几个复制了过来。

SELECTMysql

$query = $this->db->get('mytable', 10, 20);
// 即相当于: SELECT * FROM mytable LIMIT 20, 10
foreach ($query->result() as $row)
{
echo $row->title;
}

将函数赋值给$query,然后用foreach将它显示出来。

$query = $this->db->get_where('mytable', array('id' =>  $id), $limit, $offset);

$this->db->get()相比,$this->db->get_where()的第二个参数可以指定WHERE这个条件查询。

$this->db->select('title, content, date');
$query = $this->db->get('mytable');
// 即相当于: SELECT title, content, date FROM mytable
$this->db->select_max('age', 'member_age');
$query = $this->db->get('members');
// 即相当于: SELECT MAX(age) as member_age FROM members

另外$this->db->select_min();,$this->db->select_avg();,$this->db->select_sum();的用法和$this->db->select_max()相似。

$this->db->select('title, content, date');
$this->db->from('mytable');
$query = $this->db->get();
// 相当于: SELECT title, content, date FROM mytable

当然,上面的例子也可以直接使用$this->db->get()函数来实现。

$this->db->join('comments', 'comments.id = blogs.id', 'left');
// Produces: LEFT JOIN comments ON comments.id = blogs.id

CI框架中ActiveRecord模式更多插入数据(Insert)、更新(Update)、删除(Delete)以及Active Record Caching等等的介绍,请看CodeIgniter Database Active Record


“ActiveRecord和CodeIgniter 数据库类(CI 3)”文章评论(2)

  1. 哈哈,内容经典,拜读了,小站来过了,有空博主记得回访哦。

  2. Highly rated post. I be taught something totally new on totally different blogs everyday. Deciding on one . stimulating to learn the paper content from different writers and be taught a little bit one thing from their website. I’d like to use certain of this content material on my blog you’re mind. Natually I’ll give a hyperlink here we’re at your web-site.

来说兩句