稍微连接到my previous question:
我有以下表格/模型:
我已经成功加入了actionIndex的所有表,但是我想为actionView实现同样的东西,但似乎 find()和 findOne()不起作用。联接不适用于 findModel($ id)
我真的不知道,你能指点我正确的方向吗?实际上我只需要在模型BCD视图中显示模型A的相关数据,我很确定有一种简单的方法可以做到,但我找不到任何东西,我甚至不知道该找什么。问题是,正常的关系,我只能伸出到表B,所以最多2个级别。我试图创建一个达到第3级的关系,但它不起作用。感谢。
答案 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,上述应该有效。