2017-05-03 8 views
0

私は$ dataを呼び出すとコメントを取得できません。このように戻ってコメントが返されないのはなぜですか?Cakephp 2xはhasMany関連データを取得できません

Array(
[0] => Array 
    (
     [Event] => Array 
      (
       [id] => 1 
       [url_id] => 22cbb58298af0fe62284324ccc020023 
       [name] => 高尾山ハイキング 
       [date] => 2017-05-06 00:00:00 
       [memo] => 行こうぜ 
       [is_available] => 1 
       [created] => 2017-05-03 21:15:30 
       [modified] => 2017-05-03 21:15:30 
      ) 

     [Comment] => Array 
      (
      ) 

    )) 

これは、私はあなたが手動で追加する必要はありませんモデル

$data = $this->Event->find('all',[ 
      'conditions' => [ 
       'Event.url_id' => $eventURL 
      ], 
      'contain' =>[ 
       'Comment'=>[ 
        'conditions' => ['Comment.event_id' =>$eventURL], 
       ], 
      ], 
     ]); 
+0

私はこれが間違っていると思います['Conditions' => ['Comment.event_id' => $ eventURL]、 'コメントテーブルは' event_id'カラムに '22cbb58298af0fe62284324ccc020023'を持っていますか? –

+0

両方のテーブル構造を共有します。だから私たちはそれらの間の関連を知ることができます。コードと同様に、問題は関連付けにあります。原因コメントテーブルの –

+0

がHERESにテーブル はTABLE 'comments'をCREATE、EVENT_IDとして外部キーを持っている( \t' id'のINT(10)UNSIGNED NOT NULL AUTO_INCREMENT、 \t 'user_id'のINT(10)UNSIGNED NOT NULLと、 \t 'event_id' VARCHAR(255)NOT NULL、 \t' content' TEXT NOT NULLと、 \t 'created' TIMESTAMPのNULLデフォルトNULL、 \t UPDATE CURRENT_TIMESTAMP、 \t PRIMARY KEY(' id' ON 'modified' TIMESTAMPのNULLデフォルトのCURRENT_TIMESTAMP )、 \tインデックス 'インデックス2'( 'event_id') ) COLLATE = 'utf8mb4_general_ci' ENGINE = InnoDB AUTO_INCREMENT = 20 ; – Tuang

答えて

1

をいくつかのセットアップまでを終え、すでに 午前の方法により、イベントコントローラとイベントhasManyのコメントですあなたのcontainキーのforeign_key。

テーブルにモデルが正しく設定されており、EventのレコードがhasManyのレコードである場合は、これは期待したとおりです。

$data = $this->Event->find('all', [ 
    'conditions' => [ 
     'Event.url_id' => $eventURL 
    ], 
    'contain' =>[ 
     'Comment' 
    ] 
]); 

1event_idを使用してデータベース内のCommentがある場合は、それを取得する必要があります。

お持ちでない場合は、Configure::write('debug', 2)と設定し、SQLデバッグ出力を確認してください。生成されるクエリは何ですか。

関連する問題