Zapisywanie modeli z relacjami?

Cześć!

Napisałem niedużą aplikację i tam nie miałem takich problemów.

Ale teraz zaczynam pisać coś większego i już podczas rejestracji mam taki problem.

Otóż:

użytkownik rejestrując się, rejestruje siebie - czyli model "user", oraz model "team".

jak to robicie w takich przypadkach kiedy muszą zostać pozytwnie zapisane obydwa modele, do tego powiązane ze sobą bo:

-USER belongs to TEAM

-TEAM has many USER

Jak to pozabezpieczać żeby syf w danych się nie zrobił?

Szukałem po wiki coś typu: Saving relation itp ale bez pozytwnych wyników, tylko parę chaotycznych wątkó na forum.

Może ktoś z was pomożE?

Można to zrobić na różne sposoby np:




$models_valid = ( $model_user->validate() && $model_team->validate() ) ? TRUE : FALSE;


if ( $models_valid )

 {

  $model_user->save(FALSE);

  $model_team->user_id = $model_user->id;

  $model_team->save(FALSE);

 }



Jeśli chcesz mieć 100% pewności, że oba modele znajdą się w bazie możesz też użyć transakcji. Osobiście najczęściej stawiam na takie rozwiązanie ponieważ nic tak mnie nie denerwuje niż świadomość, że mogę mieć bałagan w bazie danych (chociaż przy dobrze zwalidowanych modelach szansa że zapisze się tylko pierwszy z nich jest prawie żadna).

dzięki, a gdzie na stronce jest o używaniu transakcji?

W przewodniku jest przykład jak obsłużyć transakcję.

http://www.yiiframework.com/doc/guide/1.1/en/database.ar#using-transaction-with-ar