Я пытаюсь найти подходящую модель для отношений между Группой пользователей, короткое отображаемое сообщение оповещения и названное местоположение.Связь базы данных Symfony2/Doctrine2 между группой, сообщением и местоположением
Например: студенты и интерны (Групп), возможно, потребуется специальное указание (Message), который будет отображаться в верхней части страницы (Места), в то время как преподавателям и Teammanagers, возможно, потребуются, чтобы увидеть другие строка текста.
- Место может иметь несколько сообщений, но только по одному для каждой группы.
- Группа может иметь несколько сообщений, но только по одному для каждого места.
- Многим группам (в тысячах, в некоторых случаях) может быть назначено одно и то же идентичное сообщение, поэтому сообщение как объект с ключами к местоположению группы & вызовет много дублирования.
class Message {
/**
* @ORM\ManyToOne(targetEntity="...Bundle\Entity\Group", inversedBy="messages")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id", nullable=false)
*/
protected $groups;
/**
* @ORM\ManyToOne(targetEntity="...Bundle\Entity\Location", inversedBy="messages")
* @ORM\JoinColumn(name="location_id", referencedColumnName="id", nullable=false)
*/
protected $location;
}
Я чувствую, что там должна быть много-к-одному отношения между сообщениями и местоположением, и отношением многих к одному между группами и некоторыми комбинациями «Message + Location» сущностью.
У меня возникли проблемы с созданием сущностей таким образом.
Круто! Я склонялся к объединению «Местоположение» и «Сообщение» вместе с сущностью «LocationMessage» («Много-к-одному» для местоположения, «Множество ко многим для групп», «Один-к-одному» для сообщений). Но я думаю, что я мог бы просто использовать объект Message! – Fx32
Я думаю, что это лучший способ, потому что у вас есть все, что вам нужно, в сообщениях (Location + Groups), и это может произойти только в том случае, если вы добавляете сообщение (или редактируете). Попробуйте это. Совет. Вы можете связать цепочку $ this-> getGroups() [...] $ group-> getMessages() ', чтобы проверить, уникально ли это местоположение или нет. –
Как проверить, подтверждение не выполняется? Я просто положил $ group-> addMessage ($ location); в блоке try-catch? – Fx32