我想加入两个控制器。 我有一个带有视图功能的控制器文章:
public function view($id = null)
{
$article = $this->Articles->get($id, [
'contain' => []
]);
$this->set('article', $article);
$this->set('_serialize', ['article']);
}
每篇文章都有一个关联的用户。所以我有一个控制器用户。 现在我可以拥有该文章的user_id(在数据库中)。 是否可以使用Articles表中的user_id访问User表中的用户名?使用get()函数。
例如,我知道如何使用find():
$this->set('articles', $this->Articles->find('all')->contain(['Users']));
但是get()有可能吗?对于特定的文章。
谢谢!
答案 0 :(得分:2)
如果您在用户表中有用户名字段:
class UsersTable extends Table
{
public function initialize(array $config)
{
$this->displayField('username');
}
}
文章表
class ArticlesTable extends Table
{
public function initialize(array $config)
{
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
}
}
在你的文章控制器中:
public function view($id = null)
{
$article = $this->Articles->get($id, [
'contain' => ['Users']
]);
$this->set('article', $article);
$this->set('_serialize', ['article']);
}
在您的文章视图中
<?= $article->has('user') ? $this->Html->link($article->user->username, ['controller' => 'Users', 'action' => 'view', $article->user->id]) : '' ?>
答案 1 :(得分:1)
在get()函数中,只需将Users添加到contains数组:
'contain' => ['Users']