‬yii2 如何使用数据库(三) 之使用QueryBulider

导言

上几张我讲了如何用ActiveRecord*CreateCommand*来连接数据库, 今 天我们来了解一下,如何用QueryBulider来建立和数据库之间的关联关系

什么是QuertBuilder查询构建器?

查询构建器建立在 Database Access Objects 基础之上,可让你创建 程序化的、DBMS无关的SQL语句。相比于原生的SQL语句,更易读,更安全

如何使用查询构建器

查询构建器使用分为两个步骤

  1. 创建一个 yii\db\Query 对象来代表一条 SELECT SQL 语句的不同子句(例如 SELECT, FROM)。
  2. 执行 yii\db\Query 的一个查询方法(例如:all())从数据库当中检索数据。

形式如下:

$rows = (new \yii\db\Query())
    ->select(['id', 'email'])
    ->from('user')
    ->where(['last_name' => 'Smith'])
    ->orderBy(id)
    ->limit(10)
    ->indexBy(id)
    ->all();

构建查询

我们根据上面的例子,一条一条看。

select()

使用字符串或数组来指定要查询的数据
select(['id','name']);
//等同
select('id,name');

也可以想写原生的sql语句一样写一些select的操作

$query->select(['user.id AS user_id', 'email']);

// 等同于:

$query->select('user.id AS user_id, email');

//或者

$query->select(['user.id'=>'user_id', 'email']);

//再或

$query->select(['user.id AS user_id', 'email']);
使用子查询
$subQuery = (new Query())->select('COUNT(*)')->from('user');

// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`
$query = (new Query())->select(['id', 'count' => $subQuery])->from('post');
如果不写select 就相当于select(‘*’)查询所有字段

from()

from() 方法指定了 SQL 语句当中的 FROM 子句。例如:
$query->from('user');


//也可以想原生的sql语句一样使用别名,和数据库前缀
$query->from(['public.user u', 'public.post p']);

// 等同于:

$query->from('public.user u, public.post p');
子查询
$subQuery = (new Query())->select('id')->from('user')->where('status=1');

// SELECT * FROM (SELECT `id` FROM `user` WHERE status=1) u 
$query->from(['u' => $subQuery]);

where()

用来设定查询条件

以前已经做过介绍了,这里就跳过

image

orderBy()

执行查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值