![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 5 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Od niedawna bawię się Symfony2, do tej pory jakoś nie po drodze mi było z SF i pracowałem z innymi frameworkami (Zend, Yii). Mam problem z odwzorowaniem relacji 1-1 w encjach Doctrine. Mam 2 encje User i Profile. Każdy użytkownik może, ale nie musi mieć profilu. W tabeli Profile jako klucz główny i jednocześnie klucz obcy User zastosowałem pole 'uidx' (nie wydało mi się sensowne tworzenie osobnego klucza głównego AI w tabeli Profile, skoro i tak 1 User może mieć 1 Profile, gdzie id_usera=id_profilu). Teraz w czym problem. Główną tablicą w mojej bazie jest User. Chciałem to zrobić tak, że najpierw tworzę użytkownika, później mogę utworzyć mu profil na zasadzie: - pobierz istniejącego użytkownika - stwórz nowy obiekt Profile i wypełnij go danymi (np. z formularza ProfileType) - przypisz profil do użytkownika, np. $user->setProfile($profile) - zapisz całość do bazy. Okazuje się, że chyba jednak nie mogę. Próby utworzenia relacji $profile w encji User, a następnie wykonanie 'doctrine:schema:update --force' kończą się tym, że na klucz główny w tabeli User zakładany jest CONSTRAINT do Profile - możecie sobie wyobrazić jakie jaja, nie mogę utworzyć wtedy ani jednego ani drugiego (bo w Profile też jest CONSTRAINT do User)... Próbowałem kombinować z inversedBy oraz mappedBy, ale jak się pewnie domyślacie, bezskutecznie. Tak wygląda odwołanie do User w Profile:
Tak wygląda User:
O co mi chodzi? Chciałbym móc odwołać się np. w kontrolerze do profilu z poziomu użytkownika... nie mając jednocześnie założonego CONSTRAINT na uidx w User, czyli np:
Jest to w ogóle możliwe w SF? A może źle kombinuje i powinienem to inaczej zaprojektować/odwzorować? Czy dać sobie spokój i w UserRepository utworzyć zwykłego SQLa z JOIN, który pobierze mi profil np. getUserProfile() ? Ten post edytował r4nd4ll 16.05.2013, 10:11:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 16:45 |