Yii 查询构建器

Yii 查询构建器

查询构建器允许您以编程方式创建SQL查询。查询构建器帮助您编写更可读的与SQL相关的代码。

要使用查询构建器,请按照以下步骤进行:

  • 构建一个yii\db\Query对象。
  • 执行一个查询方法。

要构建一个 yii\db\Query 对象,您应该调用不同的查询构建器函数来定义SQL查询的不同部分。

步骤1 - 为了展示查询构建器的典型用法,将 actionTestDb 方法修改如下。

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);
}

步骤2 − 前往 http://localhost:8080/index.php?r=site/test-db ,您将看到以下输出。

Yii 查询构建器

Where()函数

where()函数定义查询的WHERE子句。要指定WHERE条件,可以使用三种格式。

  • 字符串格式 - ‘name = User10’

  • 哈希格式 - [‘name’ => ‘User10′, ’email’ => ‘user10@gmail.com’]

  • 运算符格式 - [‘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);
}

以下将是输出。

Yii 查询构建器

哈希格式示例

public function actionTestDb() {
   user = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->where([
         'name' => 'User5',
         'email' => 'user5@gmail.com'
      ])
      ->one();
   var_dump(user);
}

以下将是输出结果。

Yii 查询构建器

运算符格式允许您以以下格式定义任意条件−

[operator, operand1, operand2]

操作符可以是−

  • and − [‘and’, ‘id = 1’, ‘id = 2’] 会生成 id = 1 AND id = 2 或者:与 and 操作符类似

  • between − [‘between’, ‘id’, 1, 15] 会生成 id BETWEEN 1 AND 15

  • not between − 与 between 操作符类似,但是 BETWEEN 被替换为 NOT BETWEEN

  • in − [‘in’, ‘id’, [5,10,15]] 会生成 id 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 操作符类似,但是 OR 被用于连接 NOT LIKE 的条件

  • exists − 需要一个操作数,必须是 yii\db\Query 类的实例

  • not exists − 与 exists 操作符类似,但是构建了一个 NOT EXISTS (subquery) 表达式

  • <, <=, >, >=, 或者其他任何数据库操作符:['<', '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);
}

以下将是输出结果。

Yii 查询构建器

OrderBy()函数

orderBy() 函数定义了ORDER BY片段。

示例

public function actionTestDb() {
   users = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->orderBy('name DESC')
      ->all();
   var_dump(users);
}

以下将是输出结果。

Yii 查询构建器

groupBy()函数

groupBy()函数定义了GROUP BY片段,而having()方法指定了HAVING片段。

示例

public function actionTestDb() {
   users = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->groupBy('name')
      ->having('id<5')
      ->all();
   var_dump(users);
}

下面是输出结果。

Yii 查询构建器

limit()offset() 方法定义了 LIMITOFFSET 片段。

示例

public function actionTestDb() {
   users = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->limit(5)
      ->offset(5)
      ->all();
   var_dump(users);
}

您可以看到以下输出:−

Yii 查询构建器

yii\db\Query 类提供了一组不同目的的方法 −

  • all() − 返回一个由键值对组成的行数组。

  • one() − 返回第一行。

  • column() − 返回第一列。

  • scalar() − 从结果的第一行和第一列返回一个标量值。

  • exists() − 返回一个指示查询是否包含任何结果的值。

  • count() 返回一个COUNT查询的结果。

  • other aggregation query methods − 包括sum(q),average(q),max(q),min(q)。$q参数可以是列名也可以是DB表达式。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程