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 对我的问题的回答,希望对您有所帮助!

抱歉,如果这不是您的情况,我只是在寻找我的问题的答案时发现了这个当前线程,它绝对是最接近我自己的问题的。