theme by pouretrebelle

CakePHPでcreate()のコールをサボったら火傷した | ホゲホゲロック

ユーザーの追加を行おうとすると、場合によって新規作成されたり更新処理が走ったりする。
$company_idで指定された値をプライマリキーとして持つユーザーが存在していた場合は更新処理、それ以外の場合は新規作成が行われる。
上の例では、CakePHPは$this->dataの中にプライマリキーとして使える値(この場合は$this->data[‘User’][‘id’])、またはアクションの第一引数をプライマリキーとして使おうとする。
もちろん、前者のほうが優先順位は高い。
そして、その値をプライマリキーとして持つがレコードが存在すれば更新を行い、存在しなければ新規作成する。
これによって上記の例のようなコードを書くと時として新規作成するつもりが更新処理を行ってしまう事になる。

これを確実に防いで新規作成をしたい時は

1$this->create();
2$this->save($this->data);

とする事で、アクションの引数の影響をなくすことができる。

-  CakePHPでcreate()のコールをサボったら火傷した | ホゲホゲロック

Quote posted 7ヶ月前
florean theme by pouretrebelle