龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

Yii查询生成器(Query Builder)用法实例教程(5)

时间:2014-09-06 16:10来源:网络整理 作者:网络 点击:
分享到:
数据操作查询是指SQL语句插入,更新和删除数据库表中的数据。对应于这些查询,查询生成器分别提供了插入,更新和删除的方法。不同于上面介绍 SELE

数据操作查询是指SQL语句插入,更新和删除数据库表中的数据。对应于这些查询,查询生成器分别提供了插入,更新和删除的方法。不同于上面介绍 SELECT 的查询方法,这些数据操作查询方法将建立一个完整的SQL语句,并立即执行。

insert(): 将行插入到表
update(): 更新表中的数据
delete(): 从表中删除数据
下面描述了这些数据操作查询方法。

insert()

function insert($table, $columns)

insert()方法的建立和执行一条 INSERT SQL 语句。 $table 参数指定要插入的表,而键值对数组 $columns 指定要插入的列的值。该方法将转义表名,并且将与绑定参数结合使用。

下面是一个例子:

// build and execute the following SQL:
// INSERT INTO `tbl_user` (`name`, `email`) VALUES (:name, :email)
$command->insert('tbl_user', array(
  'name'=>'Tester',
  'email'=>'tester@example.com',
));

update()

function update($table, $columns, $conditions='', $params=array())

update()方法的建立和执行一个SQL更新语句。 $table 参数指定要更新的表; $columns 是键值对的数组,用于指定要更新的列值的;$conditions 和 $params 像where()一样,指定 UPDATE 语句中的 WHERE 子句。该方法将转义表名,并且将与要更新的值的参数结合使用。

下面是一个例子:

// build and execute the following SQL:
// UPDATE `tbl_user` SET `name`=:name WHERE id=:id
$command->update('tbl_user', array(
  'name'=>'Tester',
), 'id=:id', array(':id'=>1));

delete()

function delete($table, $conditions='', $params=array())

delete()方法的建立和执行一个SQL删除语句。 $table 参数指定要删除数据的表;$conditions 和$params像where()一样,指定 DELETE 语句中的 WHERE 子句。该方法将正确转义表名。

下面是一个例子:

// build and execute the following SQL:
// DELETE FROM `tbl_user` WHERE id=:id
$command->delete('tbl_user', 'id=:id', array(':id'=>1));

4. 建立架构操作查询(Building Schema Manipulation Queries)

除了正常的数据检索和操作查询,查询生成器提供了一套用于可以操纵数据库的构建和执行SQL查询的方法。它支持以下操作:

createTable(): 创建一个表
renameTable(): 重命名表
dropTable(): 删除一个表
truncateTable(): 截断一个表,即删除表中的所有数据但不删除表本身
addColumn(): 给表添加列
renameColumn(): 重命名表中的列
alterColumn(): 改变一个表的列
addForeignKey(): 添加一个外键(自1.1.6可用)
dropForeignKey(): 删除一个外键(自1.1.6可用)
dropColumn(): 删除一个表的列
createIndex(): 创建一个索引
dropIndex(): 删除一个索引

Info: 虽然在不同的数据库管理系统中SQL语句操作数据库的模式有很大的不同,但查询生成器试图提供一个统一的接口,用于构建这些查询。这简化了数据库迁移从一个数据库管理系统到另一个任务。

抽象数据类型 Abstract Data Types

查询生成器中引入了一组可以在定义表的列中使用抽象数据类型。与物理数据类型不同,物理数据类型有具体独特的DBMS而且在不同的DBMS中有很大的不同,抽象数据类型都是独立的DBMS。当抽象数据类型在定义表的列中使用时,查询生成器将其转换成相应的物理数据类型。

下面的抽象数据类型由查询生成器的支持。

pk: 一个通用的主键类型,将被转换成 int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY for MySQL;
string: 字符串类型,将被转换成 varchar(255) for MySQL;
text: 文本型(长字符串),将被转换成 text for MySQL;
integer: 整数类型,将被转换成 int(11) for MySQL;
float: 浮点数类型,将被转换成 float for MySQL;
decimal: 十进制数类型,将被转换成 decimal for MySQL;
datetime: datetime类型,将被转换成 datetime for MySQL;
timestamp: 时间戳类型,将被转换成 timestamp for MySQL;
time: 时间类型,将被转换成 time for MySQL;
date: 日期类型,将被转换成 date for MySQL;
binary: 二进制数据类型,将被转换成 blob for MySQL;
boolean: 布尔类型,将被转换成 tinyint(1) for MySQL;
money: 金钱/货币型,将被转换成 decimal(19,4) for MySQL. 自1.1.8版本开始此类型可以使用。

createTable()

function createTable($table, $columns, $options=null)

精彩图集

赞助商链接