如何在 Cake PHP 3.5 中设置模型之间的关联?

Posted

技术标签:

【中文标题】如何在 Cake PHP 3.5 中设置模型之间的关联?【英文标题】:How can I set associations between models in Cake PHP 3.5? 【发布时间】:2018-01-18 15:27:27 【问题描述】:

我在 mysql 中有一个这样的数据库结构。我使用 Cake php 3.5。

我想在 table1 中添加一个到 table4 的 belongsToMany 连接。并将其逆也添加到 table4。

    $this->belongsToMany('Table4', /*What goes here*/);

table4 是什么?

我可以使用 belongsToMany 中的查找器进行此加入吗?

谢谢!

【问题讨论】:

CakePHPs 内置的多对多关联不支持跨越多个连接表。我建议您详细说明您尝试使用该架构解决的实际问题,然后也许有人可以建议一种使用现有 CakePHP 功能实现解决方案的方法。 【参考方案1】:

正如 ndm 在 cmets Cake 中所说的那样,Cake 不支持您想要做的事情,只是出于某种原因,这不是多对多关系,请通过迁移创建数据库,首先https://book.cakephp.org/3.0/pt/migrations.html 然后(烘烤迁移,执行迁移)您的数据库将存在,您可以运行烘焙以创建模型,然后您将意识到您可以构建一个类似的查询

$this->table1->table2->table3->table4->find()->where([conditions]);

或其他类似

$this->table1->find()->contain(['table2' => ['table3' => ['table4' => 'conditions' => ['RealConditions']]]])->first();

如果您不想学习所有这些,可以通过paintfull 路径。或者只是先阅读一下https://book.cakephp.org/3.0/en/orm/associations.html#belongstomany-associations

【讨论】:

以上是关于如何在 Cake PHP 3.5 中设置模型之间的关联?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cakephp 3.5 中设置和获取 Cookie

如何在映射模型中设置反向关系的值?

在 Android 应用程序/Cordova 3.5 中设置屏幕方向

如何在 cakePHP 的控制器中设置分页器页面

当在docker容器中设置php时,如何在vscode中设置php可执行路径php.validate.executablePath?

Cake PHP中同一个表的多个外键?