CakePHP 3外键可见

时间:2018-08-30 15:18:45

标签: php cakephp foreign-keys cakephp-3.0

我有2个表:“用户”,“级别”

用户具有以下字段:ID,用户名,密码,电子邮件,level_id 级别包含字段:ID,名称

在UsersController中,我想发送用户数据和他的外键来查看。

 $user = $this->Auth->User();
 $this->set(compact('user'));

在视图中,我希望显示该用户的级别名称。我该怎么办?

我正在尝试:

$user->level;
$user->username->level
$user->level_id->name

Ofc。没有工作。我做错了什么?

我刚开始学习CakePHP,这使我停下了脚步,因为我从未使用过 外键之前。

1 个答案:

答案 0 :(得分:0)

您可以使用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