Ich kämpfe mit einem Problem für eine beträchtliche Zeit, und ich kann keinen schönen Weg finden, mein Problem zu beheben.Phalcon - ORM Aktualisierung mit speichern Ursache doppelte Einträge
Sagen wir, ich habe zwei Tabellen:
uses (id, name)
uses_phone (id, user_id, phone)
Gesetzt ich geschaffen habe eine users (1, 'Mary')
und ihre Telefone users_phones (1, 1, '123') (2, 1, '333')
Wenn ich will, Mary zu aktualisieren, ihren Namen zu ändern zu "Maria":
Die save()
Methode nicht die tatsächlichen Datensätze in users_phone
, löschen, aber neue Einträge insert
, und dann werde ich:
1, 1, 123 2, 1, 333 3, 1, 123 4, 1, 333
Welches ist der beste Weg ist, um dieses Problem zu lösen? Ich bin ein bisschen verwirrt. Ich benutze gerne Model anstelle von PHQL (ich mag es auch, aber Models mit ORM scheinen still zu sein).
EDIT: Fügen Sie Code
ich meine Post aktualisiert haben die Modellbeziehungen und eine vereinfachte Version meiner Controller
Modell Beziehungen umfassen:
class Users {
...
$this->hasMany('xid', 'UsersTelephones', 'xid_user', ['alias' => 'UsersTelephones']);
...
}
class UsersTelephones {
...
$this->belongsTo('xid_user', '\Users', 'xid', ['alias' => 'Users']);
...
}
(sehr vereinfachte) Steuerung code:
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()
}
Vielen Dank für das Lesen und bitte verzeihen Sie mein schlechtes Englisch.
Können Sie Ihre Frage mit dem Code aktualisieren verwendet, um Datensätze zu speichern?Überprüfen Sie auch Ihr Modell afterSave() oder andere ähnliche Event-Methoden. –
Veröffentlichen Sie auch alle Modellassoziationsdefinitionen, die Sie haben. – YOMorales
Danke sowohl für die kommentierung, ich habe meine Frage aktualisiert, bitte überprüfen Sie es. Vielen Dank! – candlejack