Czy istnieje sposób ładowania urządzeń z odwołaniem kołowym? Jako przykład mam następujące urządzenie:Oprawy doktrynalne - okrągłe odnośniki
BusinessEntityTeam:
Nicole_Team:
name: Nicole's Team
Manager: [Nicole]
Business: [ACMEWidgets]
sfGuardUser
Nicole:
first_name: Nicole
last_name: Jones
email_address: [email protected]
username: nicole
password: nicole
Groups: [Group_abc]
Team: [Nicole_Team]
Jak widać, Nicole_Team odwołuje Nicole ... ale Nicole odwołuje się również Nicole_Team.
Gdy Menedżer nie był wymaganą kolumną, było to OK (urządzenie zostało załadowane, ale Menedżer miał wartość NULL), ale teraz jest wymagane, aby załadować urządzenie.
Jedyne obejście, jakie widzę, to umieszczenie relacji zespołu w jej własnym obiekcie (np. "Profil"), więc relacje nie są już okrągłe.
Czy istnieje inne podejście? Każdy użytkownik musi być w zespole, ale tylko kilku użytkowników to menedżerowie zespołu. Jestem całkiem otwarty na to, że mój model danych może być źle zaprojektowany i mieć miejsce na ulepszenia.
Dzięki za odpowiedź. Próbowałem tego, dodając dwukierunkową relację między BusinessEntityTeam i sfGuardUser w celu odniesienia do referencji. Urządzenie wczytuje się bez zgłaszania błędu, ale wartość jest nadal NULL – PeterB
Dlaczego dodałeś dwukierunkową relację? To, co zrobiłem, to uniknąć takiego związku. Jeśli chcesz poznać kierownika zespołu, musisz napisać metodę w swoim modelu drużyny. takie jak funkcja getManager() i implementuj metodę samodzielnie. Sql powinno być coś w stylu "wybierz top 1 od użytkownika u gdzie u.manager_for =?" –
Popełniłem błąd. Nie musisz samodzielnie pisać metody getManager(). Nie musisz też dodawać dwukierunkowej relacji. Relacje są automatycznie dwukierunkowe. Na przykład, dodajesz relację od użytkownika do zespołu, a następnie masz dwie metody: user-> getTeam() i team-> getUsers() automatycznie. Dla przykładu: będą dwie metody: user-> getManagedTeam() i team-> getManager(). Muszę przeczytać plik schema.xml, aby przekazać więcej szczegółów. –