Можно ли добавить внешний ключ через аннотации без добавления ассоциации в Doctrine?

Я использую DDD и не хочу создавать ненужную в Doctrine ассоциацию между агрегатами. Кроме того, «внешний ключ» — это первичный ключ, а не фактическая сущность, на которую ссылаются.

Есть ли способ создать отношение внешнего ключа в базе данных, используя аннотации поля внешнего ключа, без создания ассоциации на уровне доктрины приложения (используя One-to-Many, One-to-One и т. д.).

Вы имеете в виду, что у вас есть объекты в шаблоне Наследование таблицы классов? Затем можно было бы просто определить корневой агрегат как имеющий эти свойства, а другие классы Entity расширяются от него. Doctrine позаботится об объявлении DiscriminatorMap, поэтому вам нужны только InheritanceType и DiscriminatorColumn в корневом агрегате. Затем Doctrine также создает ваши внешние ключи (идентификатор PK корневого агрегата)

rkeet 08.02.2019 15:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
43
1

Ответы 1

Вы можете импортировать отображение:

https://symfony.com/doc/current/doctrine/reverse_engineering.html

нравится:

php bin/console doctrine:mapping:import "App\Entity" yml --path=config/doctrine

удалите отношения из сгенерированных файлов yml и сгенерируйте сущности после:

php bin/console make:entity --regenerate App

Другие вопросы по теме