Yii2 第三层关系数据

标签 yii2 relationship table-relationships

有点连接到 my previous question :

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

我已经成功地连接了actionIndex的所有表,但我现在想为actionView实现同样的事情,但似乎find()findOne() 效果不一样。联接不适用于 findModel($id)

我真的不知道,你能指出我正确的方向吗?事实上,我只需要在模型 BCD View 中显示模型 A 的相关数据,并且我很确定有一个简单的方法可以做到这一点,但我找不到任何东西,我什至不知道要寻找什么。因为问题是,在正常关系下我只能访问表 B,所以最多 2 个级别。我试图建立一种达到第三级的关系,但没有成功。谢谢。

最佳答案

您不必定义多级关系。

如果您必须对 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 存在关系,以上内容应该有效。

关于Yii2 第三层关系数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233702/

相关文章:

excel - 如何在kartik export yii2中更改文件名

mysql - 在 MySQL 中为 3 个表创建单个插入查询

php - 在带有命名空间的 Phalcon 中使用相关模型

ruby-on-rails - 我正在尝试将关系模型中的关注者状态从 'requested' 更改为 'approved'

javascript - 如何将ajax值传递给同一页面上的php变量?

php mysql ssl 连接失败,访问被拒绝错误

yii2 - Yii2将函数应用于所有请求

r - 创建 ID 对组,每个组具有共同的 ID

java - 在Java SpringBoot中,可以有一个通用的起始节点并稍后分配类型吗?

php - 从相关模型 laravel 获取 id