首页 > 解决方案 > 在 CakePHP 中显示 FK 数据的问题

问题描述

我正在尝试显示实际值,而不是使用 cakePHP 的 ID 号。

这些是我的表 角色表 用户表 l

这是我的用户表代码

class UsersTable extends Table
{
   public function initialize(array $config)
   {
     $this->hasOne('Roles');
   }

这是我的用户控制器代码

    public function list()
    { 
       $usersTable = $this->Users->find('all')->contain(['Roles']);
       $allUsers = $usersTable->toArray();

       $this->set("allUsers", $allUsers);
    }

这就是我尝试打印它的方式

$user->role->name 

但是我收到以下错误 错误

我做错了什么,我该如何解决这个问题?

标签: phpcakephp

解决方案


在您的用户表中,关系顺序是错误的,表示用户只有一个角色,所以这将尝试使用角色表上的键加入角色表。它实际上应该是 belongsTo,因为 User 属于一个角色。尝试这个:

class UsersTable extends Table
{
   public function initialize(array $config)
   {
     $this->belongsTo('Roles');
   }
}

推荐阅读