如何在 CakePHP 中包含未关联的实体



示例查询:

TableRegistry::getTableLocator()
    ->get('Parents')
    ->find()
    ->contain([
        'Children' => function (Query $query) {
            return $query->where([
                'Children.code = Parent.code'
            ]);
        }
    ])

Parent表和Children表仅将code作为公共字段。

如何定义它们的关联?

如何包含未关联的实体?

您可以在关联配置中自定义foreignKeybindingKey

在家长表中.php:

$this->hasMany('Children', [
    'bindingKey' => 'code',
    'foreignKey' => 'code'
]);

此配置将设置关联实体时要查找的字段。

然后,您可以像这样关联控制器上的实体:

// This query will contain children where Children.code === Parent.code
TableRegistry::getTableLocator()
    ->get('Parents')
    ->find()
    ->contain('Children');

您可以按照@kgbph说明通过 ParentesTable 定义这些表之间的关系。

尽管在您的示例中,我认为更好的解决方案是使用Cake的树行为。这是文档的链接。

最新更新