CakePHP2.0ベータ版でbeforeSaveロジックを書き込もうとしています。基本的に、ユーザーがタグのような機能のためにテキストを送信できるようにしたいと思います。beforeSave関数は、関連するテーブルを検索します。タグが存在する場合は、プライマリレコードにリンクし、存在しない場合は、新しいタグを作成してからリンクします。
これが私の関数です(beforeSaveにあります):
function beforeSave() {
if(!empty($this->data['Term']) && isset($this->Term)){
$terms = $this->Term->find('list');
$terms = array_flip($terms);
foreach($this->data['Term'] as $key => $term){
if(!empty($terms[$term['name']])){
$this->data['Term']['Term'][$key]['id'] = $terms[$term['name']];
unset($this->data['Term'][$key]);
}else{
$this->Term->create();
$this->Term->save(array('Term' => array('name' => $term['name'])));
$this->data['Term']['Term'][$key]['id'] = $this->Term->id;
unset($this->data['Term'][$key]);
}
}
}
return true;
}
これは基本的に私が望むように機能し、必要に応じてレコードを作成し、既存のレコードを見つけて、次のような配列を作成します。
Array
(
[Project] => Array
(
[id] => 2
[title] => Project Title
...
)
[Term] => Array
(
[Term] => Array
(
[0] => Array
(
[id] => 10
)
[1] => Array
(
[id] => 2
)
)
)
)
また、プライマリモデル(プロジェクト)にデータを正常に保存します。ただし、[Term][Term]の下の関連付けは無視されます。これがHABTMの関連付けを保存するための正しい配列構造であると確信しています。
誰かがこれの何が悪いのかわかりますか?