在yii2 ActiveQuery中获取查询的所有当前连接

时间:2015-07-23 13:11:10

标签: mysql activerecord yii2 yii2-advanced-app

有没有办法从查询中获取所有联接表?

例如:

query = Account::find()->joinWith(['gallery'])->joinWith(['articles'])->etc...

yii2中是否有任何集成方法会返回上面连接的表(或者我可以挂钩以便手动获取它们的事件)?

2 个答案:

答案 0 :(得分:2)

@Beowulfenator建议的解决方案仅显示关系的连接(使用joinWith()方法添加。

要显示所有联接,您需要像这样准备查询:

$query = Account::find()
    ->join('...', '...')
    ->joinWith(['gallery', 'articles']); // By the way, you can reduce you code like this

$query->prepare();

这会将yii\db\ActiveQuery转换为简单的yii\db\Query,它不具有joinWith属性,但具有join属性,可以显示所有联接。

你可以var_dump看到它:

var_dump($query->join);
exit();

第一个元素存储连接类型,第二个 - 表名(注意它可以是字符串或数组,具体取决于使用的关系),第三个 - on条件。

答案 1 :(得分:1)

joinWith班级拥有{{1}}公共财产。它是一个包含所有连接信息的数组。除其他外,它包含连接的表名。

更多信息here