CakePHP 3外键在视图中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CakePHP 3外键在视图中相关的知识,希望对你有一定的参考价值。

我有2个表:用户,级别

用户有字段:id,用户名,密码,电子邮件,level_id级别包含字段:id,name

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

 $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

以上是关于CakePHP 3外键在视图中的主要内容,如果未能解决你的问题,请参考以下文章

JPA OneToOne,外键在 Spring Boot 上为空

在 LINQ 中访问外键在哪里?

mysql进阶 十一 外键在数据库中的作用

我应该使用外键在 SQL 中显示树关系吗

Laravel:当我的外键在数组中时,如何在模型中添加关系?

java - 如何根据Java Servlet中的外键在一列中显示多个值?