我在使用Cake中的可包含的嵌套模型分页时遇到问题...
我有三个型号:Category,CompanyCategory,Company,那里有关联
Category hasMany CompanyCategory
CompanyCategory belongsTo Category
CompanyCategory belongsTo Company
Company hasMany CompanyCategory
我使用contains获取数据,如下所示:
$options = [
'conditions' => ['Category.slug' => $slug],
'contain' => [
'CompanyCategory.Company.CompanyAddress'
]
];
return $this->find('first', $options);
一切正常,直到我想要对嵌套模型 - 公司进行分页。我使用带有show方法的CategoriesController,它使用所选类别和关联公司呈现视图(公司有许多类别和类别有很多公司)。
我尝试过这样的事情:
$this->Paginator->settings = [
'limit' => 1,
'order' => [
'id' => 'asc'
],
'contain' => array('CompanyCategory.Company')
];
$data = $this->Paginator->paginate('Category.CompanyCategory.Company', array('Category.slug LIKE' => $slug));
$this->set('category', $data);
但这对我不起作用:(
有任何建议/帮助吗?
答案 0 :(得分:1)
如果您定义Category有hasAndBelongsToMany关系,那么对您来说很容易。因此,您创建了一个名为CompanyCategory的新模型,我假设有一个原因..
你可以试试这个 -
$this->Category->bindModel(
array(
'hasAndBelongsToMany' => array(
'Company'
)
)
);
$this->Paginator->settings = array(
'conditions' => array(
'Category.slug' => $slug
),
'limit' => 1,
'order' => array(
'id' => 'asc'
),
'contain' => array(
'Company'
)
);
我假设您的关系表名称是categorys_companies
....如果没有,那么您需要采取不同的方法
答案 1 :(得分:0)
Finnaly我使用
解决了我的问题$this->Paginator->settings = array(
'limit' => 2,
);
$this->Paginator->paginate('Category.CompanyCategory.Company');
我忘了写我使用CategoriesController的方法,而不是公司。
但是现在另一个问题阻止了我...我使用了TranslateBehaviour,我得到的数据没有翻译......
有什么想法吗?我google了很多,但无法找到任何令人满意的解决方案。