从cakephp中的关联数据库中检索数据

时间:2018-11-13 04:52:22

标签: cakephp cakephp-3.0

我有一个条目表,其中users_id是 Users 表的外键。

我已经在EntriesTable中设置了EmiratesTo关联,如下所示:

$this->belongsTo('Users', [
    'foreignKey' => 'user_id',
    'joinType' => 'INNER'
]);

此后,我在EntriesController中编写了此代码:

$entries = TableRegistry::get('Entries');
$query = $entries->findByTitle($title)
    ->contain(['Users']);
$entry = $query->first();
$this->set('entry', $entry);

在“条目”的VIEW模板中,我必须显示编写条目的用户的用户名字段。

我知道在CakePHP 1的早期版本中,我只需写 $ entry ['User'] ['username'] 即可检索编写条目的用户的用户名。现在我正在使用CakePHP 3.6,它似乎无法正常工作。如何在CakePHP 3中执行相同的任务?

2 个答案:

答案 0 :(得分:1)

您可以编写如下

在控制器中

public function view($title)
{
    $entry = $this->Entries->findByTitle($title)->contain(['Users']);
    $entry = $entry->first();
    $this->set('entry', $entry);
}

OR

public function view($title)
{
    $query = $this->Entries->find('all', [
        'where' => ['Entries.title' => $title],
        'contain' => ['Users']
    ]);
    $entry = $query->first();

    $this->set('entry', $entry);
}

在视图中

<?= $entry->user->username ?>

答案 1 :(得分:0)

因此,在cakephp中,您正在加载其控制器的模型,这是默认完成的,您可以直接在同一控制器中创建find()方法,如果要从其他表/模型中查找,可以执行以下操作- >

a。 $ this-> Entries-> otherTableName()-> find()-> all();

b。 $ tableName = $ this-> loadModel('tableName');    $ tableName-> find();

相关问题