我创建了一个名为 的表Delegates
,并创建了一个用户表和用户实体。而且我已经习惯$this->setTable('delegates');
了UsersTable
能够访问委托$this->Users;
(我只想说我已经创建了一个带有委托表的用户模型)
到目前为止,一切都很好...
在我的应用程序中,我试图访问深层关联。这个查询一切都很好,但是当我contain
得到User
模型时The Users association is not defined on Comments.
我可以确认关联设置正确。
...
// There are more associations up there.
...
'Comments', [
'className' => 'App\Model\Table\CommentsTable',
'foreignKey' => 'delegate_assessment_criteria_id',
'belongsTo' => [
'Assessors' => [
'className' => 'App\Model\Table\AssessorsTable',
'foreignKey' => 'assessor_id',
],
'Users' => [
'className' => 'App\Model\Table\UsersTable',
'foreignKey' => 'delegate_id',
]
]
]
这里是深度联想。
...
// There are more associations up there.
...
'Comments' => function($q) {
return $q
->select([
'id'
])
->order(['Comments.created DESC'])
->contain([
'Assessors' => function($q) {
return $q
->select([
'id'
])
->enableAutoFields();
}
])
->contain([
'Users' => function($q) {
return $q
->select([
'id',
'delegate_id'
])
->enableAutoFields();
}
])
->enableAutoFields();
}
2 注释:
- 如果我
User
在查询的层次结构中首先包含模型,我可以访问这些User
字段,但在深度关联中这不起作用。 - 如果我包含
Delegates
它,它会起作用。
我相信 Cakephp 查询生成器有问题。