Cakephp4,如何在实体对象中加载关联数据?

Cakephp4,如何在实体对象中加载关联数据?,cakephp,entity,associated-value,Cakephp,Entity,Associated Value,我有一个用户表和一个角色表。 用户只有一个角色。因此,在UsersTable.php中: $this->belongsTo('Roles', [ 'foreignKey' => 'role_id', 'joinType' => 'INNER', ]); 现在在User.php(Entity!!)中,我需要用户角色的角色名。 但我只有一个用户实体,其中没有关联的数据。 我现在有: public fun

我有一个用户表和一个角色表。 用户只有一个角色。因此,在UsersTable.php中:

   $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是关键!