2014-04-15 95 views
2

我有使用蛋糕中容納嵌套分頁模式的一個問題...CakePHP的2.x的中容納+分頁嵌套模式

我有三個型號:類別,CompanyCategory,公司有關聯是這樣的

Category hasMany CompanyCategory 
CompanyCategory belongsTo Category 
CompanyCategory belongsTo Company 
Company hasMany CompanyCategory 

我得到使用的數據包括,如下圖所示:

$options = [ 
    'conditions' => ['Category.slug' => $slug], 
    'contain' => [ 
    'CompanyCategory.Company.CompanyAddress' 
    ] 
]; 
return $this->find('first', $options); 

一切工作正常,直到我想分頁嵌套模式 - 公司。我使用ShowControl方法使用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

你是什麼意思的嵌套模型?什麼是btw模型的關係? –

+0

我的意思是嵌套爲關聯。 類別hasManyCompanyCategory(即Category和Company之間的鏈接表),CompanyCategory belongsTo Category和belongsTo Company。公司有許多公司類別。這工作正常,但我不知道如何實施公司的分頁。 – kris

+0

爲什麼不建立公司HABTM類別的關係?這可以解決你的問題 –

回答

1

如果定義範疇具有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 ....如果沒有,那麼你需要採取不同的方法

+0

試試這個,但沒有奏效。儘管如此,仍然可以獲得所有的公司而不是一個公司。 – kris

+1

我認爲這將分類與聯繫公司 – kris

+0

感謝您的回答 – Pratik

0

Finnaly我決心用

$this->Paginator->settings = array(
    'limit' => 2, 

); 

$this->Paginator->paginate('Category.CompanyCategory.Company'); 

我忘了寫,我我的問題使用來自CategoriesController的方法,而不是公司。

但現在另一個問題阻止我...我用TranslateBehaviour,而我得到沒有翻譯資料...

任何想法?我GOOGLE了很多,但找不到任何滿意的解決方案。