在CakePHP 4中,可以使用关联表对象来加载关联数据。关联表对象可以在模型的find()
和get()
方法中通过contain()
方法进行指定。
ArticlesTable.php
中:public function initialize(array $config): void
{
parent::initialize($config);
$this->belongsTo('Users');
$this->belongsTo('Categories');
}
view()
方法中,使用contain()
方法来加载关联数据,例如加载文章的作者和分类信息:public function view($id)
{
$article = $this->Articles->get($id, [
'contain' => ['Users', 'Categories']
]);
$this->set(compact('article'));
}
在上面的例子中,contain()
方法接受一个关联表数组作为参数,可以指定加载多个关联表的数据。加载的关联表会作为$article
实体对象的属性在视图中使用。
需要注意的是,在加载关联数据时,可以使用关联表对象的其他方法来对关联数据进行过滤和排序,例如:
'contain' => [
'Users' => function ($query) {
return $query->select(['id', 'username']);
},
'Categories' => function ($query) {
return $query->order(['name' => 'ASC']);
}
]
这样可以只选择指定的字段进行加载,或者对关联表的数据进行排序。
CakePHP 4相关文档:
领取专属 10元无门槛券
手把手带您无忧上云