Есть ли способ загрузить светильники с круглыми ссылками? В качестве примера у меня есть следующий прибор:Доктрина крепления - круговые ссылки
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]
Как вы можете видеть, Nicole_Team ссылки Николь ... но Николь также ссылается Nicole_Team.
Когда менеджер не был обязательным столбцом, это было нормально (прибор был загружен, но менеджер был NULL), но теперь требуется, чтобы загрузить прибор.
Единственное, что я могу видеть, это связать отношения Team в своем собственном объекте (например, «Профиль»), чтобы отношения больше не были круговыми.
Есть ли другой подход? Каждый пользователь должен быть в команде, но лишь несколько пользователей - это менеджеры команд. Я совершенно уверен в том, что моя модель данных может быть плохо спроектирована и иметь возможности для улучшения.
Спасибо за ваш ответ. Я попробовал это, добавив двунаправленную связь между BusinessEntityTeam и sfGuardUser, чтобы иметь отношение к ссылке. Зарядка загружается без ошибки, но значение по-прежнему равно NULL – PeterB
Почему вы добавили двунаправленную связь? Я сделал это, чтобы избежать таких отношений. Если вы хотите знать менеджера команды, вам придется написать метод в вашей модели команды. таких как функция getManager() и реализовать метод самостоятельно. Sql должен быть чем-то вроде «select top 1 от пользователя u, где u.manager_for =?» –
Я допустил ошибку. Вам не нужно писать метод getManager() самостоятельно. И вам не нужно добавлять двунаправленные отношения. Эти отношения автоматически двунаправлены. Например, вы добавляете отношения от пользователя к команде, тогда у вас есть два метода: user-> getTeam() и team-> getUsers() автоматически. Для вашего примера: будут два метода user-> getManagedTeam() и team-> getManager(). Я должен прочитать ваш schema.xml, чтобы рассказать вам подробнее. –