Cakephp4,如何加载实体对象中的关联数据?
Cakephp4, how to load associated data in an Entity object?
我有一个用户 table 和一个角色 table。
一个用户有一个角色。所以在 UsersTable.php:
$this->belongsTo('Roles', [
'foreignKey' => 'role_id',
'joinType' => 'INNER',
]);
现在 User.php(实体!!)我需要用户角色的角色名称。
但是我只有其中没有关联数据的用户实体。
我现在有:
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
定义为 Role
实体。
但是,我感觉您已经知道这一点,并且有另一个问题可能与我最近正在解决的问题重叠,也可能不重叠。在此处查看 ndm 对我的问题的回答,希望对您有所帮助!
抱歉,如果这不是您的情况,我只是在寻找我的问题的答案时发现了这个当前线程,它绝对是最接近我自己的问题的。
我有一个用户 table 和一个角色 table。 一个用户有一个角色。所以在 UsersTable.php:
$this->belongsTo('Roles', [
'foreignKey' => 'role_id',
'joinType' => 'INNER',
]);
现在 User.php(实体!!)我需要用户角色的角色名称。 但是我只有其中没有关联数据的用户实体。 我现在有:
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
定义为 Role
实体。
但是,我感觉您已经知道这一点,并且有另一个问题可能与我最近正在解决的问题重叠,也可能不重叠。在此处查看 ndm 对我的问题的回答,希望对您有所帮助!
抱歉,如果这不是您的情况,我只是在寻找我的问题的答案时发现了这个当前线程,它绝对是最接近我自己的问题的。