Cakephp4,如何在实体对象中加载关联数据?
我有一个用户表和一个角色表。 用户只有一个角色。因此,在UsersTable.php中:Cakephp4,如何在实体对象中加载关联数据?,cakephp,entity,associated-value,Cakephp,Entity,Associated Value,我有一个用户表和一个角色表。 用户只有一个角色。因此,在UsersTable.php中: $this->belongsTo('Roles', [ 'foreignKey' => 'role_id', 'joinType' => 'INNER', ]); 现在在User.php(Entity!!)中,我需要用户角色的角色名。 但我只有一个用户实体,其中没有关联的数据。 我现在有: public fun
$this->belongsTo('Roles', [
'foreignKey' => 'role_id',
'joinType' => 'INNER',
]);
现在在User.php(Entity!!)中,我需要用户角色的角色名。
但我只有一个用户实体,其中没有关联的数据。
我现在有:
public function getRole()
{
$q = TableRegistry::getTableLocator()->get('Roles');
$roles = $q->find('list')->toArray();
return $roles[$this->role_id];
}
这是可行的,但是TableRegistry在cake4中被标记为过时,我找不到任何其他方法来实现这一点。执行此操作的最佳方法是什么?如果您希望在控制器中同时使用用户和角色数据,您可以执行以下操作:例如
$user = $this->Users->get($id, [
'contain' => ['Roles'],
]);
结果对象将$user->role
定义为角色
实体
然而,我有一种感觉,你已经知道这一点,并且有另一个问题可能与我最近解决的问题重叠,也可能不重叠。在这里查看ndm对我的问题的回答,希望它能帮助你
抱歉,如果这不是你的情况,我只是在寻找我问题的答案时发现了这条当前的线索,它肯定是最接近我自己的问题。你真的应该做基本教程并阅读这两页&你还没有以任何方式理解ORM。你的问题是对我问题的更好描述。我找到了类似的解决方案。在userTable中添加finder是关键!