yii2数据库查询生成器--连接查询join函数
2017-07-02 18:06:37
•
阅读
打赏
join()
[yii\db\Query::join()|join()]] 用来指定 SQL 语句当中的 JOIN 子句。如,
// ... LEFT JOIN `post` ON `post`.`user_id` = `user`.`id`
$query->join('LEFT JOIN', 'post', 'post.user_id = user.id');
join() 有四个参数:
$type: 连接类型,如:'INNER JOIN', 'LEFT JOIN'。
$table: 要连接的表名称。
$on: 可选参数, 连接表的条件,用字符串表示
$params: 可选参数,与连接条件绑定的参数。
调用如下的快捷方法来指定 INNER JOIN, LEFT JOIN 和 RIGHT JOIN。
innerJoin()
leftJoin()
rightJoin()
如,
$query->leftJoin('post', 'post.user_id = user.id');
通过多次调用如上所述的连接方法来连接多张表,每连接一张表调用一次。
除了连接表以外,还能连接子查询。方法如下,将需要被连接的子查询指定 为一个 yii\db\Query 对象,例如,
$subQuery = (new \yii\db\Query())->from('post');
$query->leftJoin(['u' => $subQuery], 'u.id = author_id');
在例子中,你应该将子查询放到一个数组当中,而数组当中的键,则为这个子查询的别名。
union()
union() 方法用来指定 SQL 语句当中的 UNION 子句的。如,
$query1 = (new \yii\db\Query())
->select("id, category_id AS type, name")
->from('post')
->limit(10);
$query2 = (new \yii\db\Query())
->select('id, type, name')
->from('user')
->limit(10);
$query1->union($query2);
通过多次调用 union() 方法来追加更多的 UNION 子句。
美景欣赏


相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型