【发布时间】:2015-10-09 00:47:44
【问题描述】:
好的,我在理解关联的运作方式时遇到了一些问题,尤其是 belongsTo,这是我的设置:
文章可以有多个类别
类别可以属于多个文章
所以在我的数据库中我有 3 个表:
articles、categories 和一个连接表 articles_categories
表格/ArticlesTable.php:
public function initialize(array $config)
{
$this->addBehavior('Timestamp');
$this->table('articles');
$this->belongsTo('Users');
$this->belongsToMany('Categories', [
'through' => 'ArticlesCategories',
'alias' => 'Categories',
'foreignKey' => 'article_id',
'joinTable' => 'articles_categories',
'targetForeignKey' => 'category_id'
]);
}
表格/CategoriesTable.php:
public function initialize(array $config)
{
$this->table('categories');
$this->displayField('name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsToMany('Articles', [
'through' => 'ArticlesCategories',
'alias' => 'Articles',
'foreignKey' => 'category_id',
'joinTable' => 'articles_categories',
'targetForeignKey' => 'article_id'
]);
}
表格/ArticlesCategoriesTable.php:
public function initialize(array $config)
{
$this->belongsTo('Articles');
$this->belongsTo('Categories');
}
现在在view 操作CategoriesController.php 中,我可以概述特定类别,我需要检索一些与该类别相关的文章。
什么是做这种事情的正确方法?这是我所拥有的:
public function view($id = null)
{
$category = $this->Categories->find('all',['limit'=>1])->where(['Categories.id' => $id])->contain(['Articles']);
$this->set(['category'=> $category]);
}
它有点工作,但我还需要能够限制相关文章的数量..
【问题讨论】:
-
“类别可以属于多个文章”为什么?
-
您可以拥有多个具有相同类别的文章
标签: php cakephp orm cakephp-3.0