我有一个条目表,其中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中执行相同的任务?
答案 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();