2011-06-17 13 views
0

VoicenoteというモデルのbelongsToの関係はFonykerActivitySourceです。私が行うときは、次のCakePHP read()は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せずに来て、起こっかもしれないもの上の任意のアイデア?私はunbindModel()を使用して試してみて、FonykerActivitySource以外のすべてをアンバインドするとき

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

      [Fonyker] => Array 
       (
       ) 

      [ActivitySource] => Array 
       (
       ) 

はまた彼らも、空の配列として表示されません。

答えて

0

あなたがrecursive = 2を使用して、空FonykerActivitySource配列を見ているので、あなたは間違いなくそれらのモデルを照会しているが、あなたの制限'fields'は、あなただけがリストされてきたフィールドを取得するつもりだことを意味します。

FonykerActivitySourceから必要なフィールドをフィールド配列に追加する必要があります。

+0

どうすれば追加できますか?ただFonyker.field?そして、私は他の再帰型を使用して、モデルのバインドとアンバインドを試みましたが、それでもテーブルからデータを取得しません。 – 8vius

+0

再帰を削除すると、すべての関係を持つメインテーブルが取り出されます。 ActivitySourceテーブル – 8vius

+0

@ 8vius "Fonyker.field '、"を$ fields配列の最後に追加するだけです。 "Voicenote.public"の直後に "(二重引用符はありません)。 – ianmjones

1

私はCakePHPにはかなり新しいですが、FonykerActivitySourceモデルを定義する必要があると思いますか?たとえば、hasOneまたはhasManyの関係に配置します。

編集:$fields変数もあります。FonykerまたはActivitySourceのいずれの値も選択していないようです。

+0

これらはbelongsToとして変更されています。これらのフィールドから特定のフィールドを選択しないと問題はありません。データ全体を取得するだけで、コードスニペットには表示されませんが他のテーブルからデータを取得します.2つではありません。 – 8vius

関連する問題