Содержание
Видео актуально для Symfony 7
Где создаются и хранятся сущности
Давайте создадим первую сущность в нашем проекте. Подробнее о том, что такое сущности в Symfony и зачем они нужны, мы говорили ранее. Если открыть папку src/entity. В этой папке по умолчанию хранятся те сущности, которые можно использоваться в нашем проекте.
Если мы перейдем в папку doctrine/packages/doctrine.yaml мы можем там увидеть такую настройку, как orm. Какие классы в нашем проекте, каким таблицам должны соответствовать. И если мы посмотрим, то должны увидеть здесь путь до нашей директории Entity.
orm/mappings/App/dir: '%kernel_project_dir%/src/Entity'
Благодаря этой настройке Symfony узнает, что в папке Entity у нас хранятся те сущности, которые должны соответствовать структуре таблиц в базе данных. Вы можете здесь поменять эту настройку и сущности вашего проекта будут храниться в другой папке.
Процесс создания сущности
Мы можем вручную создать внутри папки src/entity какие-то php классы, которые будут являться сущностям базы данных. Но, для начала, рекомендую вам воспользоваться так называемым maker bundle. Мы установили его в предыдущих видео. Он позволяет в автоматическом режиме генерировать те сущности, которые будут в таблицах базы данных.
Чтобы это сделать, нам нужно воспользоваться командой
php bin/console make:entity
Это команда, которая позволяет создать нам новую сущность. Обратите внимание, что эта возможность работает только если у вас включен режим разработки dev. В режиме prod, maker bundle не работает.
У нас откроется диалоговое окно, в котором мы можем прописать те настройки сущности, которые мы хотим создать. Давайте создадим сущность Page.
Что собой представляют сущности
Имена сущностей начинаются с большой буквы и указываются в единственном числе. Page относиться к страницам, которые будут в нашем проекте, user - пользователям, которые будут на нашем сайте.
Желательно называть сущности на английском языке.
Такие существуют правила хорошего тона.
Сущность представляет собой обычный PHP класс, который содержит некоторые свойства: приватные свойства и публичные методы, которые мы можем использовать. Все свойства являются приватным в сущности, а методы являются публичными.
Общаться с сущностью мы можем с помощью методов, которые могут либо что-то записать и изменить в этой сущности, либо что-то получить из этой сущности.
Кроме того, в папке Repository, у нас был создан PageRepository.
Репозиторий - переводиться как хранилище. Для каждой таблицы создается некий специальный класс репозитория, который и позволяет нам выполнять запросы к этому хранилищу.
Здесь есть некие методы по умолчанию, но также вы можете прописать здесь какие-то свои методы, которые будут позволять вам обращаться к этой таблице, получать оттуда какие-то данные, добавлять или обновлять данные. Как правило, здесь пишутся какие-то кастомные запросы к этой таблице, чтобы можно было получать оттуда какую-то кастомную информацию и использовать ее в проекте.
Если над свойством сущности стоит такая форма записи:
#[ORM\Column(...)]
Это означает то, что в нашей таблице есть такая колонка, которая называется также как текущее свойство и имеет тип данных, как указано в настройках этого поля.
Благодаря атрибуту:
#[ORM\Entity(repositoryClass: PageRepository::class)]
Symfony понимает, что имеет дело с сущность и у этой сущности есть связь с репозиторем PageRepository.
Таким образом вы можете сгенерировать сущность Entity в вашем Symfony проекте, хотя это можно не генерировать и написать все вручную.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти