>我有 2 个表:用户、级别
用户有字段:ID、用户名、密码、电子邮件、level_id 级别具有字段:id、名称
在用户控制器中,我希望发送用户数据和他的外键以查看。
$user = $this->Auth->User();
$this->set(compact('user'));
在视图中,我想要显示此用户的级别名称。我该怎么做?
我正在尝试:
$user->level;
$user->username->level
$user->level_id->name
Ofc.没有工作。我做错了什么?
我刚开始学习CakePHP,这阻止了我,因为我从未使用过 之前的外键。
你可以使用Cakephp协会。首先Levels
表中再添加一个名为user_id
的字段。
假设用户与级别有一对一的关系。然后在/src/Model/Table 文件夹下创建一个名为UsersTable.php的文件,并在那里定义模型关联,如下所示
class UsersTable extends Table
{
public function initialize(array $config)
{
$this->hasOne('Levels');
}
}
现在,您可以在UsersController
中执行查找查询,如下所示:
$user = $this->Users->find('all')->where(['Users.id' => $id])->contain(['Levels'])->toArray();
$this->set(compact('user'));
然后在 ctp 文件上,您可以访问级别名称,如下所示:
echo $user['level']['name'];
如需进一步阅读关联: https://book.cakephp.org/3.0/en/orm/associations.html
查询生成器: https://book.cakephp.org/3.0/en/orm/query-builder.html