hasMany through(Join Model)アソシエーションを使用して、関連付けられたモデルデータを取得できません。私はcakephp2.2.3で作業しています。同じ検索結果がcakephp1.3でも問題なかったので、何が問題なのかわかりません...
イベントhasManyScoresToEvent。スコアhasManyScoresToEvent。ScoresToEventはEventとScoreに属します。
ScoresToEventには追加情報があるため、HATBMを使用できません。
いくつかのコード:
event.php
class Event extends AppModel{
public $name='Event';
public $hasMany=array('ScoresToEvent');
public $belongsTo=array('Entity');
public $actsAs=array('containable');
}
score.php
class Score extends AppModel{
public $name='Score';
public $hasMany=array('ScoresToEvent');
public $belongsTo=array('Entity');
}
scores_to_event.php
class ScoresToEvent extends AppModel{
public $name='ScoresToEvent';
public $belongsTo=array('Event','Score');
}
データを取得すると、次の結果が得られます。
$this->Event->ScoresToEvent->find('all', array('recursive'=>2))
array(
(int) 0 => array(
'ScoresToEvent' => array(
'id' => '8',
'event_id' => '7',
'score_id' => '1'
)
),
(int) 1 => array(
'ScoresToEvent' => array(
'id' => '9',
'event_id' => '7',
'score_id' => '3'
)
)
)
この場合、イベントとスコアのデータを取得する必要があります。
包含可能を使用しようとすると、モデル「ScoresToEvent」がモデル「Score」とこの配列に関連付けられていないため、スコアデータが取得されないことが返されます...
$this->Event->find('all', array(
'contain'=>array(
'Entity',
'ScoresToEvent'=>array('Score'=>array('Entity'))
),
'conditions'=>array('Event.id'=>7));
array(
(int) 0 => array(
'Event' => array(
'id' => '7',
'entity_id' => '17',
'start_date' => '2012-07-24',
'status' => null,
'end_date' => null
),
'Entity' => array(
'id' => '17',
'title' => 'y',
'content' => '',
'subtitle' => '',
'type' => 'Evento',
'avatar' => null,
'image' => null
),
'ScoresToEvent' => array(
(int) 0 => array(
'id' => '8',
'event_id' => '7',
'score_id' => '1'
),
(int) 1 => array(
'id' => '9',
'event_id' => '7',
'score_id' => '3'
)
)
)
)
私のせいはどこですか?コードのどの部分が間違っていますか?私はこれを真新しいcakephp2.2.3インストールで試しました
皆さんありがとう
ps同じコードがcakephp1.3で正しく機能します。ppsは「エンティティ」を考慮しません。