Подключение новых YAML конфиг-файлов в сервис-контейнер Symfony.

В Symfony Сервис-Контейнер создается с использованием одного ресурса конфигурации (по умолчанию это файл config/services.yaml). Это дает вам абсолютную гибкость по отношению к настройкам сервисов в приложении.

Добавить новые конфиги с помощью imports.

По умолчанию конфигурация службы находится в config/services.yaml. Но если этот файл становится большим, вы можете организовать несколько файлов. Предположим, вы решили перенести некоторую конфигурацию в новый файл:

Читать далее

Ленивая загрузка сервисов в Symfony. Зачем нужны ленивые сервисы.

Для чего нужна ленивая загрузка сервисов?

В некоторых случаях вы можете захотеть внедрить сервис, который немного тяжело создать, но не всегда используется внутри вашего объекта. Например, представьте, что у вас есть NewsletterManager и вы внедряете в него сервис Mailer. Только несколько методов вашего NewsletterManager фактически используют сервис Mailer, но даже когда вам это не нужно, всегда создается объект сервиса Mailer при создании вашего NewsletterManager.

Читать далее

Как реализовать Декоратор Сервиса в сервис-контейнере Symfony?

Декоратор — это структурный паттерн проектирования, который позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки».

При повторном переопределении существующего определения сервиса, для сервис-контейнера Symfony, то исходный сервис будет теряться:

Читать далее

Создание связи (отношения) один ко многим в Doctrine.

Существует два основных типа отношений / ассоциаций:

  • ManyToOne / OneToMany
  • ManyToMany

ManyToOne/OneToMane наиболее распространенная связь, отображаемая в базе данных с помощью столбца внешнего ключа (например, столбец category_id в таблице product). На самом деле это всего лишь один тип ассоциации, но он виден с двух разных сторон отношения.

Читать далее

Консольные команды в Symfony 5 для работы с Doctrine.

ORM Doctrine в Symfony 5 это прекрасный инструмент для работы с БД разных видов в ООП-стиле. Для эффективной и комфортной работы в Symfony 5 предусмотрено большое количество консольных команд.

Читать далее

Как создать сущности Entity Doctrine в Symfony из существующей базы данных.

Когда вы начинаете работу над новым проектом, в котором используется база данных, возникает две разные ситуации. В большинстве случаев модель базы данных спроектирована и построена с нуля. Однако иногда вы начинаете с существующей и, вероятно, неизменяемой модели базы данных. К счастью, Doctrine поставляется с набором инструментов, которые помогут сгенерировать классы моделей из существующей базы данных.

Читать далее

Получение связных сущностей с помощью JOIN в репозитории в Symfony фреймворке.

По умолчанию Doctrine при загрузке объектов из таблиц с отношенимя OneToMany / ManyToOne использует несколько запросов (примеры здесь). В приведенных выше примерах были сделаны два запроса — один для исходного объекта (например, категории) и один для связанного объекта (объектов) (например, объектов Product).

В случае если требуедтся сразу получить всю информацию, то требуется использовать запрос с JOIN.

Читать далее