来自第3级的Yii2关系数据

时间:2015-07-05 18:38:23

标签: yii2 relationship table-relationships

稍微连接到my previous question

我有以下表格/模型: enter image description here

我已经成功加入了actionIndex的所有表,但是我想为actionView实现同样的东西,但似乎 find() findOne()不起作用。联接不适用于 findModel($ id)

我真的不知道,你能指点我正确的方向吗?实际上我只需要在模型BCD视图中显示模型A的相关数据,我很确定有一种简单的方法可以做到,但我找不到任何东西,我甚至不知道该找什么。问题是,正常的关系,我只能伸出到表B,所以最多2个级别。我试图创建一个达到第3级的关系,但它不起作用。感谢。

1 个答案:

答案 0 :(得分:4)

您不必定义多级关系。

如果您必须在BCD中为1条记录执行此操作,则可以使用

进行访问
$BCDmodel->BC->B->A->attribute

当然使用您定义的关系的名称。

当在表格中显示此信息时,这也会起作用但是效率非常低。对于您显示的每一行,您将收到大量查询,因此您应该更改查询以使其更有效。

$query = BCD::find()->with(['BC', 'BC.B', 'BC.B.A']).....

当您需要显示仍可使用的数据时,这会将所有内容连接在一起并使查询更好一些

$BCDmodel->BC->B->A->attribute

只要确保您的BCD模型与名为BC的BC有关系,您的BC模型与B的关系称为B,您的B模型与A的关系称为A,上述应该有效。