【发布时间】:2015-10-28 01:51:06
【问题描述】:
我们正在使用新的 cakePHP ORM,但我在理解新的 ORM 在处理 hasMany 关联时的工作方式时遇到了一些问题。
例如我们有一个名为“Users”的表,它与另一个表“UsersAbsences”有一个 hasMany 关系。定义和处理本身工作正常。我们已经定义了表对象和实体。
$this->addAssociations([
'hasMany' => [
'UsersAbsences' => [
'className' => 'UsersAbsences',
'propertyName' => 'absences',
'foreignKey' => 'user_id'
]
]);
在我们的 UsersTable 中,我们创建了一个自定义方法,该方法检索一个用户的详细信息,使用 QueryBuilders ->contain 方法来获取属性“absence”定义的与 hasMany 相关的“UsersAbsences”。我们将视图变量 $user 设置为与模板中的实体一起使用:工作正常。
...
$users->contain(['UsersAbsences',...]);
...
现在让我困惑的部分是: $user 的对象类型是“UserEntity”。当我现在遍历 $user->absences... 时,我总是得到 CakeEntity 对象,而不是(如我所料)AbsenceEntity-objects。
问题:我想在 UserAbsence-Entity 中实现一个自定义方法,我想在遍历用户的每个缺席时在模板中调用该方法。
当对“belongsTo”附加的关联使用 ->contain 方法时,我得到了正确的实体类。
有人知道如何处理吗?
【问题讨论】:
标签: cakephp cakephp-3.0