hasAndBelongsToMany以下の配列
cakePHPはモデルにアソシエーションを設定すると、子や親のリレーション関係にあるデータも自動的に持ってきてくれるので便利です。
$recursive設定で、階層数やとってこないようにすることもできます。
しかし、hasAndBelongsToManyの場合は、とっては来るのですが、それをキーで囲まないため、「id」「title」と同じ並びに0,1,2と並んでしまいます。
cake/libs/model/datasources/dbo_source.phpの845行目あたり、
foreach ($merge as $i => $row) {
if (count($row) == 1) {
$data[$association][] = $row[$association];
} else {
$tmp = array_merge($row[$association], $row);
unset($tmp[$association]);
$data[$association][] = $tmp;
}
}
を、
foreach ($merge as $i => $row) {
if (count($row) == 1) {
$data[$association]['HABTM'][] = $row[$association]; //<<<
} else {
$tmp = array_merge($row[$association], $row);
unset($tmp[$association]);
$data[$association]['HABTM'][] = $tmp; //<<<
}
}
とすると、[HABTM]=array(,,,)と囲まれます。

