私はかなりの時間問題を抱えています。私は問題を解決する良い方法を見つけることができません。Phalcon - ORM保存の重複エントリを使用して更新する
のは、私は2つのテーブルがあるとしましょう:
uses (id, name)
uses_phone (id, user_id, phone)
私はusers (1, 'Mary')
と彼女の携帯電話を作成していると仮定するとusers_phones (1, 1, '123') (2, 1, '333')
私は彼女の名前を変更するには、メアリーを更新する場合「マリア」へ:
save()
方法はusers_phone
で、実際のレコードを削除しませんが、新しいエントリをinsert
なり、その後、私が持っています:
1, 1, 123 2, 1, 333 3, 1, 123 4, 1, 333
この問題を解決するための最良の方法はどれ?私は少し混乱しています。私はModelをPHQLの代わりに使うのが好きです(私も好きですが、ORMのモデルはquie magicと思われます)。
EDIT:
class Users {
...
$this->hasMany('xid', 'UsersTelephones', 'xid_user', ['alias' => 'UsersTelephones']);
...
}
class UsersTelephones {
...
$this->belongsTo('xid_user', '\Users', 'xid', ['alias' => 'Users']);
...
}
(非常に単純化された:私はモデルとの関係や私のコントローラ
モデル関係の簡易版を含めるように私のポストを更新したコード
を追加します。 )コントローラコード:
function update($xid) {
...
$user = Users::findFirstByXid($xid);
// $user->email = "..";
$user_tfs = array();
for ($i=0;$i<count($tfs_array);$i++)
{
$user_tfs[$i] = new UsersTelephones();
$user_tfs[$i]->tf_number = $tfs_array[$i];
}
$user->UsersTelephones = $user_tfs;
// ...
$user->save()
}
私の悪い英語を読んでいただきありがとうございます。 $tfs_array
はどこから来るから、まず
1):
レコードを保存するために使用されるコードであなたの質問を更新することができます。ここでは
は、より多くのリンクがありますか?モデルafterSave()や他の同様のイベントメソッドを必ず確認してください。 –
また、お持ちのモデル関連定義を投稿してください。 – YOMorales
両方のコメントをいただきありがとうございます、私は私の質問を更新しました、それを確認してください。ありがとうございました! – candlejack