私はいくつかのbeforeSaveロジックをCakePHP 2.0ベータ版に書こうとしています。基本的に私は、ユーザーがタグのような機能のためにテキストを提出できるようにしたい。 beforeSave関数は、関連するテーブルを検索します。タグが存在する場合はそれをプライマリレコードにリンクし、存在しない場合は新しいタグ&を作成してリンクします。CakePHP beforeSave&HABTM
Array
(
[Project] => Array
(
[id] => 2
[title] => Project Title
...
)
[Term] => Array
(
[Term] => Array
(
[0] => Array
(
[id] => 10
)
[1] => Array
(
[id] => 2
)
)
)
)
:これは基本的にこのような配列を作成し、記録を作成し、必要な場合や既存のレコードを見つけ、私が望むように動作します
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;
}
:だからここ
は(beforeSaveで)私の機能です
また、プライマリモデル(プロジェクト)にデータを正常に保存します。しかし、[Term] [Term]の関連は無視されます。私はこれがHABTMの関連付けを保存するのに正しい配列構造であると確信しています。
誰でもこれが間違っていますか?
私は実際にフォームヘルパーを使用していないんだけど、フィールドは次のようになります。 'これは私がフォームヘルパーを使用しない理由です:http:// groups ' – bjudson
.google.com/group/cake-php/browse_thread/thread/cdf1aaf3fe350695 – bjudson
ループする必要はありません(ケーキ本の例ではループがありません)。たぶんあなたがそれをしたので、データは保存されませんでした。 –