use*_*599 4 relationship table-relationships yii2
有点连接到我以前的问题:
我有以下表格/模型:

我已经设法为actionIndex连接了所有表,但是我现在想为actionView实现相同的东西,但是find()和findOne()似乎不一样。联接不适用于findModel($ id)
我没有什么头绪,能否请您指出正确的方向?实际上,我只需要在模型BCD视图中显示模型A的相关数据,就可以肯定有一种简单的方法,但是我什么也找不到,我什至不知道要寻找什么。因为问题是,在正常关系下,我只能伸到表B,所以最多只能有2个等级。我试图创建一种关系,这种关系可以达到第3级,但无法正常工作。谢谢。
您不必定义多级关系。
如果您必须为BCD中的1条记录执行此操作,则可以使用
$BCDmodel->BC->B->A->attribute
Run Code Online (Sandbox Code Playgroud)
当然,请使用您定义的关系的名称。
当在表格中显示此信息时,这也将起作用...但是效率很低。对于显示的每一行,您都会收到很多查询,因此您应该更改查询以使其更有效。
$query = BCD::find()->with(['BC', 'BC.B', 'BC.B.A']).....
Run Code Online (Sandbox Code Playgroud)
这将把所有内容结合在一起,使查询成为更好的查询,当您需要显示仍可以使用的数据时
$BCDmodel->BC->B->A->attribute
Run Code Online (Sandbox Code Playgroud)
只要确保您的BCD模型与名为BC的BC有关系,您的BC模型与称为B的B有关系,您的B模型与叫做A的A有关系,以上方法就可以了。