私はかなり単純なことで立ち往生しています:
SN hasMany NA. 以下を使用して、含まれる NA を条件としてデータを取得します
$this->find('all',array(
'recursive' => -1,
'conditions' => array(
'SN.deleted IS NULL',
'SN.user_id' => $user_id,
),
'contain' => array(
'NA' => array('conditions'=> array('wave' => 1) ),
)
));
SN と NA の両方が Containable として機能します。
データを取得しましたが、NA は SN 配列にネストされていません。
array(
(int) 0 => array(
'SN' => array(
'id' => '1',
'user_id' => '1',
),
'NA' => array(
(int) 0 => array(
'id' => '1',
'SN_id' => '1',
'wave' => '1',
)
)
),
これにより、FormHelper を使用して多くの迷惑な動作が発生します (現在、必要に応じてデータをマッサージすることで修正していますが、何が間違っているのかを理解したいと思っています)。パスは指定できません。
debug($this->data[$s]['NA'][0]['wave']); # would work
echo $this->Form->input("$s.NA.0.role"); # doesn't work
# leads to data[SN][0][NA][0][role] # SN is auto-prepended
echo $this->Form->input("$s.SA.NA.0.role"); # what I use after massaging the data so it's nested
データとエラーメッセージ配列の両方をマッサージしようとしたにもかかわらず、検証メッセージが想定されている場所に表示されないという問題がまだあります。