0

我有一个用户表和一个角色表。一个用户只有一个角色。所以在 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 中被标记为过时,我找不到任何其他方式来使这项工作。这样做的正确方法是什么?

4

1 回答 1

1

如果您想在控制器中同时使用用户和角色数据,您可以这样做

    $user = $this->Users->get($id, [
        'contain' => ['Roles'],
    ]);

并且生成的对象已$user->role定义为Role实体。

但是,我感觉您已经知道这一点,并且有另一个问题可能与我最近解决的问题重叠,也可能不重叠。在这里查看 ndm 对我的问题的回答,希望对您有所帮助!CakePHP 4.1 用户实体作为授权身份相关字段

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

于 2020-07-24T10:22:16.317 回答