Lugir 2017-03-05 15:07
在《数据库接口(Database API)db_query() 静态查询》中已经介绍过如何在 Drupal 中使用 db_query()
执行静态查询。一般比较简单的 SELECT
语句都可以使用db_query()
函数,复杂的查询则会使用 db_select()
。因为查询语句通过 Drupal 动态构建,因此被称为动态请求。
在进行 SELECT
查询的大部分情况下都可以使用静态查询,当 SQL 语句需要动态构建,或需要被其它模块修改时,就应该使用动态查询。
因为 insert, update, delete, merge 都必须是动态请求,而 SELECT 有静态和动态两种情况,因此一般在说动态请求时,都是指 db_select().
Drupal 使用 db_select()
函数开始构建动态查询的第一步,其中 $table
是需要查询的表名,$alias
是表的别名(留空则默认使用表名),$options
是查询的其它选项设置。
// db_select($table, $alias = NULL, array $options = array());
$query = db_select('user', 'u', $options);
db_select()
函数的返回值是一个 SelectQuery
对象,继承的 fields(), joins(), group() 等方法会在构建语句时用到。
动态 SELECT
查询可以写得非常复杂,作为入门我们现在先看一个简单的示例,之后再慢慢学习更多高级的、复杂的用法。
假设我们要以动态查询的方式实现以下查询,要怎么做呢?
$result = db_query("SELECT uid, name, status, created, access
FROM {users} u WHERE uid <> 0 LIMIT 50 OFFSET 0");
对应的动态查询的写法如下:
// 创建 SelectQuery 对象
$que
剩余50%内容付费后可查看