首页 > yii2教程 > yii2数据库使用

yii2数据库查询生成器--连接查询join函数

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 子句。

 

美景欣赏

美景欣赏

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。