Итак, мы с вами познакомились с тем, что такое связи между сущностями в фреймворке Symfony.
Сейчас давайте рассмотрим такой, тоже важный момент, какие бывают виды связей. Это позволит нам еще более прояснить ситуацию, что же такое связи, и для каких ситуаций это, может быть, понадобиться.
Одновременно мы будем постепенно внедрятся в эту тему и разбираться, какие виды связей существуют.
Первая, и самая часто используемая связь, это ManyToOne и OneToMany. С английского языка переводится как «множество к одному» и «один к множеству».
По сути, это одна и та же связь, но они взаимно обратные. Мы потом еще посмотрим, как это будет выглядеть на реальных примерах.
В примере этой связи, которую мы разбирали в предыдущем видео, есть некоторая страница и у этой страницы есть множество комментариев, которые к ней относятся.
То есть одной странице соответствует множество комментариев. Это связь OneToMany. И соответственно, множеству комментариев соответствует какая-то одна страница. Это связь ManyToOne. Вот таковой первый вид связи. Надеюсь, с этим более-менее понятно и переходим к следующему виду связи.
Второй вид связи – это ManyToMany, то есть «множество к множеству». Какой пример можно здесь рассмотреть?
Предположим, у нас есть какой-то веб-сайт и на этом веб-сайте есть какие-то определенные страницы, которые на нем публикуются.
У каждой страницы может быть множество так называемых меток или тегов, по которым эту страницу можно каким-то образом сортировать. Возможно, вы встречались с таким понятием как «метка» или «тег» во многих системах, в социальных сетях.
Это используется при создании видео, публикации какой-то заметки, когда к ней добавляется какой-то тег. Одной и той же странице может быть присвоено сразу множество тегов. И точно так же, когда мы берем в отдельности один какой-то тег, то один какой-то конкретный тег может быть присвоен множеству каких-то страниц. Это типичный пример связи ManyToMany.
То есть множество тегов соответствует множеству страниц, и множество страниц соответствует множеству тегов. Вот такой пример. Это второй вид связи, который тоже используется в Symfony. Такие связи используются реже чем ManyToOne и OneToMany. Тем не менее, иногда с этим тоже приходится встречаться при веб-разработке.
И последний вид связи, который есть в Symfony между сущностями, это связь OneToOne, то есть «один к одному».
Предположим, у нас на сайте есть сущность какого-то пользователя и у него есть логин, пароль и так далее. И одновременно с этим у этого пользователя есть некий паспорт, в котором публикуются его какие-то типовые личные данные, например, его реальные имя, фамилия и так далее. В общем, это карточка об этом пользователе. Эту карточку можно вынести в отдельную сущность (иногда такое делают на сайтах).
Получается следующая ситуация: что у одного пользователя может быть только один паспорт и у одного паспорта может быть только один пользователь. Вот такой смысл. Со связью OneToOne тоже приходится встречаться несколько реже, чем ManyToOne и OneToMany.
Но, тем не менее, иногда бывает ситуация, что эта связь тоже может понадобиться. Это основные типы связи, которые есть в Symfony. Просто я хотел на этом остановиться, прежде чем мы перейдем к практике, где будем создавать какие-то реальные связи между сущностями.
Пока на этом с теорией завершаем, и в следующем видео приступим к практике и будем создавать реальные сущности с реальными связями.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти