2013-01-18 58 views
1

我已經查看了可容納組件和其他問題,但看起來不像那樣可以幫助我。php - cakephp - 在遞歸中指定hasMany列/字段分頁

基本上,我有分頁設置爲1,它返回我的東西就像

Array 
(
[0] => Array 
(
    [ModelName1] => Array 
    (
     [id] => 83 
     [parent_id] => null 
     [field1] => value1 
    ) 

    [AssociatedModelName1] => Array 
    (
     [id] => 1 
     [field1] => value1 
    ) 

    [children] => Array 
    (
     [0] => Array 
     (
      [ModelName] => Array 
      (
       [id] => 42 
       [parent_id] => 83 
       [field1] => value1 
       [field2] => value2 
       [field3] => value3 
      ) 

      [AssociatedModelName] => Array 
      (
       [id] => 2 
       [field1] => value1 
       [field2] => value2 
       [field3] => value3 
      ) 

我能夠加入

$fields => array("ModelName1.field1") 

,以限制ModelName1和AssociatedModelName1的字段的輸出設置數組。事實上,我將它傳遞給DataTable插件的組件初始化的「列」,但它應該是相同的。

但是,既然有這麼多孩子,每個孩子都有很多田地,我只想得到每個孩子的「田地2」。

我該如何做到這一點?如果我指定「Children.ModelName1」,則會出現一個SQL1054錯誤,該錯誤未找到列。

任何線索?

+0

你能證明你的代碼此查詢? – Young

+0

我使用內置的PaginateComponent,它不是一個自定義查詢。 $ this-> Ticket-> recursive = 1; $ this-> DataTable-> paginate(); < - 這只是一個組件擴展PaginateComponent – AbSoLution8

+0

檢查http://stackoverflow.com/questions/2279958/cakephp-paginate-conditions-in-derived-fields – Young

回答

3

你必須使用一個這樣或那樣的條件數組:

$this->paginate['Model'] = array(
    'contain' => array(
     'ChildModel' => array(
      'fields' => array('ChildModel.field1', 'Childmodel.field2'), 
      'ChildChildModel' => array(
       'fields' => array('ChildChildModel.field1', 'ChildChildModel.field2'), 
      ) 
     ) 
    ) 
);