Salve, qualcuno ha provato a fare delle transazioni via activerecord?
avrei bisogno di salvare più model, e devo essere certo che tutti i salvataggi avvengano correttamente.
ho provato un codice di questo tipo:
in questa maniera però, provando lato controller a inserire valori manualmente, ad esempio, valori testuali in campi int, la transazione avviene ugualmente, lasciando vuoto il campo int nel db perchè permette valori null.
nel caso,ad esempio, io inserisca valori numerici che violino una foreign key.. a quel punto vedo l'errore.
la domanda è. non c'è un modo che la transazione passi prima la validazione yii e poi anche i vincoli del db. ora va solo per la seconda questione, e il db nel caso arrivino caratteri al posto di un int non genera un'eccezione ma lascia il campo vuoto.
avrei bisogno di salvare più model, e devo essere certo che tutti i salvataggi avvengano correttamente.
ho provato un codice di questo tipo:
$transaction = Yii::app()->db->beginTransaction(); try { $user = new User(); $user->username = $form->username; $user->password = $form->password; $user_save = $user->save(FALSE); $user_info = new UserInfo(); $user_info->name = $form->name; $user_info->user = $user->id; $user_info->age = $form->age; $user_info_save = $user_info->save(FALSE); if($user_save && $user_info_save){ $transaction->commit(); } else { $transaction->rollBack(); } } catch(Exception $e) { $transaction->rollBack(); }
in questa maniera però, provando lato controller a inserire valori manualmente, ad esempio, valori testuali in campi int, la transazione avviene ugualmente, lasciando vuoto il campo int nel db perchè permette valori null.
nel caso,ad esempio, io inserisca valori numerici che violino una foreign key.. a quel punto vedo l'errore.
la domanda è. non c'è un modo che la transazione passi prima la validazione yii e poi anche i vincoli del db. ora va solo per la seconda questione, e il db nel caso arrivino caratteri al posto di un int non genera un'eccezione ma lascia il campo vuoto.