Итак, мы с вами познакомились с тем, что такое связи между сущностями в фреймворке Symfony.  

Сейчас давайте рассмотрим такой, тоже важный момент, какие бывают виды связей. Это позволит нам еще более прояснить ситуацию, что же такое связи, и для каких ситуаций это, может быть, понадобиться.  

Одновременно мы будем постепенно внедрятся в эту тему и разбираться, какие виды связей существуют. 

Первая, и самая часто используемая связь, это  ManyToOne и OneToMany. С английского языка переводится как «множество к одному» и «один к множеству».

По сути, это одна и та же связь, но они взаимно обратные. Мы потом еще посмотрим, как это будет выглядеть на реальных примерах. 

В примере этой связи, которую мы разбирали в предыдущем видео, есть некоторая страница и у этой страницы есть множество комментариев, которые к ней относятся. 

То есть одной странице соответствует множество комментариев. Это связь OneToMany. И соответственно, множеству комментариев соответствует какая-то одна страница. Это связь ManyToOne. Вот таковой  первый вид связи. Надеюсь, с этим более-менее понятно и переходим к следующему виду связи. 

Второй вид связи – это ManyToMany, то есть «множество к множеству». Какой пример можно здесь рассмотреть? 

Предположим, у нас есть какой-то веб-сайт и на этом веб-сайте есть какие-то определенные страницы, которые на нем публикуются. 

У каждой страницы может быть множество так называемых меток или тегов, по которым эту страницу можно каким-то образом сортировать. Возможно, вы встречались с таким понятием как «метка» или «тег» во многих системах, в социальных сетях. 

Это используется при создании видео, публикации какой-то заметки, когда к ней добавляется какой-то тег. Одной и той же странице может быть присвоено сразу множество тегов. И точно так же, когда мы берем в отдельности один какой-то тег, то один какой-то конкретный тег может быть присвоен множеству каких-то страниц. Это типичный пример связи ManyToMany. 

То есть множество тегов соответствует множеству страниц, и множество страниц соответствует множеству тегов. Вот такой пример. Это второй вид связи, который тоже используется в Symfony. Такие связи используются реже чем ManyToOne и OneToMany. Тем не менее, иногда с этим тоже приходится встречаться при веб-разработке. 

И последний вид связи, который есть в Symfony между сущностями, это связь OneToOne, то есть «один к одному».

 Предположим, у нас на сайте есть сущность какого-то пользователя и у него есть логин, пароль и так далее. И одновременно с этим у этого пользователя есть некий паспорт, в котором публикуются его какие-то типовые личные данные, например, его реальные имя, фамилия и так далее. В общем, это  карточка об этом пользователе. Эту карточку можно вынести в отдельную сущность (иногда такое делают на сайтах). 

Получается следующая ситуация: что у одного пользователя может быть только один паспорт и у одного  паспорта может быть только один пользователь. Вот такой смысл. Со связью OneToOne тоже приходится встречаться несколько реже, чем ManyToOne и OneToMany. 

Но, тем не менее, иногда бывает ситуация, что эта связь тоже может понадобиться. Это основные типы связи, которые есть в Symfony. Просто я хотел на этом остановиться, прежде чем мы перейдем к практике, где будем создавать какие-то реальные связи между сущностями. 

Пока на этом с теорией завершаем, и в следующем видео приступим к практике и будем создавать реальные сущности с реальными связями.