2011-06-17 46 views
0

我有一個模型稱爲Voicenote具有belongsToFonykerActivitySource的關係。當我做到以下幾點:CakePHP讀取()不檢索belongsTo綁定

function admin_index(){ 

     $this->layout = 'admin'; 
     $this->Voicenote->recursive = 2; 

     $fields = array(
      'Voicenote.id', 
      'Voicenote.title', 
      'Voicenote.created', 
      'Voicenote.duration', 
      'Voicenote.public', 
     ); 

     $this->paginate = array(
      'fields' => $fields, 
      'limit' => 20, 
      'order' => array('id' => 'ASC') 
     ); 

     $result = $this->paginate('Voicenote'); 
     pr($result); 
     $this->set('result', $result); 
    } 

結果數組來沒有FonykerActivitySource,什麼可能發生的任何想法?

[0] => Array 
     (
      [Voicenote] => Array 
       (
        [id] => 1 
        [title] => CFRFA5KBLPJZP79B2PG8XH8DFSMB8G 
        [created] => 2011-03-09 00:00:00 
        [duration] => 23868 
        [public] => 0 
       ) 

      [Fonyker] => Array 
       (
       ) 

      [ActivitySource] => Array 
       (
       ) 

而且當我嘗試使用unbindModel()和取消綁定的一切,但FonykerActivitySource他們甚至不顯示爲空數組。

回答

0

因爲你使用recursive = 2,看空FonykerActivitySource數組你絕對查詢這些模型,但你的限制性'fields'意味着你只會得到你所列出的字段。

您需要將您需要的字段從FonykerActivitySource添加到您的字段數組中。

+0

如何添加它們?只是Fonyker.field?我已經嘗試過使用其他遞歸類型,並綁定和解除綁定模型,它仍然不會檢索表中的任何數據 – 8vius

+0

如果我刪除了遞歸,它將檢索具有所有關係的主表除了Fonyker和ActivitySource表格 – 8vius

+0

@ 8vius只需將「Fonyker.field」,「添加到你的$ fields數組的末尾,例如就在''Voicenote.public',「(當然沒有雙引號)之後。 – ianmjones

1

我對CakePHP自己來說相當新,但我認爲你必須定義FonykerActivitySource模型?例如,將它們放在hasOnehasMany的關係中。

編輯此外,你的$fields變量 - 你似乎沒有從FonykerActivitySource選擇任何值。

+0

它們與belongsTo屬於同一種模式,如果我不從它們中選擇任何特定字段,它只會回顧整個數據,我不會在代碼片段中顯示它,但它確實從其他表中檢索數據,只是不是我想要的 – 8vius