-
构造一个 yii\db\Query 对象.
-
执行 query() 方法
public function actionTestDb() { //generates "SELECT id, name, email FROM user WHERE name = 'User10';" $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where(['name' => 'User10']) ->one(); var_dump($user); }
Where()函数
-
string 格式 − 'name = User10'
-
hash 格式 − ['name' => 'User10', 'email => user10@gmail.com']
-
operator 格式 − ['like', 'name', 'User']
字符串格式的示例
public function actionTestDb() { $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where('name = :name', [':name' => 'User11']) ->one(); var_dump($user); }

哈希格式的例子
public function actionTestDb() { $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where([ 'name' => 'User5', 'email' => 'user55@gmail.com' ]) ->one(); var_dump($user); }
输出结果如下图所示:
[operator, operand1, operand2]
-
and − ['and', 'id = 1', 'id = 2'] 会产生类似: id = 1 AND id = 2
-
between − ['between', 'id', 1, 15] 会产生类似:id BETWEEN 1 AND 15
-
not between − 类似 between 操作符, 但是 BETWEEN 被替换为 NOT BETWEEN
-
in − ['in', 'id', [5,10,15]] 会产生类似: IN (5,10,15)
-
not in − 类似 in 操作符,但是 IN 被替换为 NOT IN
-
like − ['like', 'name', 'user'] 会产生类似: name LIKE '%user%'
-
or like − 类似 like 操作符, 但是 OR 用来分割 LIKE 谓词
-
not like − 类似于 like 操作符, 但是 LIKE 被 NOT LIKE 替代;
-
or not like − 类似 not like 运算符,但或用来连接 NOT LIKE 谓词
-
exists − 要求一个操作数必须是 yii\db\Query 类的一个实例
-
not exists − 类似 exists 操作符,但是构建了一个NOT EXISTS(子查询)的表达式
-
<, <=, >, >=, 或任何其他数据库操作符: ['<', 'id', 10] 会产生类似: id<10
操作符格式示例 -
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where(['between', 'id', 5, 7]) ->all(); var_dump($users); }
输出结果如下图所示:
OrderBy()函数
如下示例 −
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->orderBy('name DESC') ->all(); var_dump($users); }
输出结果如下图所示:
groupBy()函数
如下示例 −
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->groupBy('name') ->having('id < 5') ->all(); var_dump($users); }
输出结果如下图所示:
如下示例 −
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->limit(5) ->offset(5) ->all(); var_dump($users); }
输出结果如下图所示:
-
all() − 返回一行为名称-值对的数组。
-
one() − 返回第一行
-
column() − 返回第一列
-
scalar() − 返回结果的第一行和第一列的标量值。
-
exists() − 返回指示查询是否包含任何结果值
-
count() 返回COUNT查询结果
-
其他聚集查询方法 - 包括:sum($q), average($q), max($q), min($q)。$q 参数可以是列名 或 DB 表达式。