有没有办法从查询中获取所有联接表?
例如:
query = Account::find()->joinWith(['gallery'])->joinWith(['articles'])->etc...
yii2中是否有任何集成方法会返回上面连接的表(或者我可以挂钩以便手动获取它们的事件)?
答案 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。