首页 > 开发 > PHP > 正文

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

2024-05-04 22:18:51
字体:
来源:转载
供稿:网友

本文为yii官网英文文档的翻译版本,主要介绍了Yii查询生成器(Query Builder)的用法。分享给大家供大家参考之用。具体如下:

首先,Yii的查询生成器提供了用面向对象的方式写SQL语句。它允许开发人员使用类的方法和属性来指定一个SQL语句的各个部分。然后,组装成一个有效的SQL语句,可以通过调用DAO数据访问对象的描述方法为进一步执行。以下显示了一个典型的使用查询生成器建立一个select语句:

$user = Yii::app()->db->createCommand()  ->select('id, username, profile')  ->from('tbl_user u')  ->join('tbl_profile p', 'u.id=p.user_id')  ->where('id=:id', array(':id'=>$id))  ->queryRow();

当你在应用程序中需要组装SQL语句的程序,或基于一些条件逻辑时,最好使用查询生成器。使用查询生成器的好处主要包括:

①.它可以建立复杂的SQL语句编程。

②.它会自引用表名和列名防止SQL保留字和特殊字符的冲突。

③.它还可以引用参数值和使用参数绑定,这有助于减少SQL注入攻击的风险。

④.它提供了一定程度的数据库抽象,简化了迁移到不同的数据库平台的成本。

它不强制使用查询生成器。事实上,如果你的查询是简单的,它是更容易和更快的直接写SQL语句。

注:查询生成器不能用于修改现有的查询指定为SQL语句。例如,下面的代码将不能工作:

$command = Yii::app()->db->createCommand('SELECT * FROM tbl_user');// the following line will NOT append WHERE clause to the above SQL$command->where('id=:id', array(':id'=>$id));

换句话说,不要混合使用普通的SQL和查询生成器。

1. 制备查询生成器(Preparing Query Builder)

Yii的查询生成器是从 CDbCommand 提供主要数据库查询类,描述数据访问对象。

开始使用查询生成器,我们创造了 CDbCommand 的一个新实例,

$command = Yii::app()->db->createCommand();

我们使用 Yii::app()->db 来获得数据库连接,然后调用 CDbConnection::createCommand() 创建所需的命令实例。

请注意,将整个SQL语句放入 createcommand() ,叫做数据访问对象,我们需呀把设置它为空。这是因为我们将在下面的解释中使用查询生成器添加SQL语句的各个部分的方法。

2. 建立数据检索查询(Building Data Retrieval Queries)

数据检索查询是指选择SQL语句。查询生成器提供了一套方法来建立一个SELECT语句的各个部分。因为所有这些方法返回 CDbCommand 的实例,我们可以使用方法链调用他们,如图所示,在本节开头的例子。

select():             指定查询的选择部分                       specifies the SELECT part of the query

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表