Ссылка на существующую связанную сущность в файле YAML

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

Например, поле status в следующем примере должно загрузить App\Entity\Status, который уже существует в базе данных (от 1 до 3 — существующие идентификаторы, но это не удается):

App\Entity\Dummy:
    dummy_{1..10}:
        name: '<firstName()>'
        surnames: '<lastName()>'
        email (unique): '<email()>'
        startDate: '<dateTimeBetween("-200 days", "now")>'
        subject: '<sentence()>'
        status: '<numberBetween(1, 3)>'

При загрузке этого файла с опцией --append я получаю следующую ошибку:

Недопустимое значение свойства «статус» объекта «dummy_1» (класс: App\Entity\Dummy).

Ожидаемый аргумент типа «?App\Entity\Status», «int», указанный в пути к свойству «status».

Как я могу ссылаться на уже существующую сущность?

Что касается «связанного» вопроса, то в этом вопросе связанный объект загружается в отдельный файл YAML (не в моем случае, связанный объект уже находится в базе данных), и на этот вопрос нет ответа.

Кроме того, где я могу найти полную ссылку на такие функции, как <firstName()>, <lastName()>, <sentence()> и т. д.?

K. Weber 07.03.2024 11:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
1
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прямо из документации:

Nelmio\Entity\Group:
    group1:
        owner: '@user<numberBetween(1, 200)>'

В вашем случае это будет:

App\Entity\Status:
   status_1
       name: "Foo"
   status_2
       name: "Bar"
   status_3
       name: "Baz"


App\Entity\Dummy:
    dummy_{1..10}:
        name: '<firstName()>'
        surnames: '<lastName()>'
        email (unique): '<email()>'
        startDate: '<dateTimeBetween("-200 days", "now")>'
        subject: '<sentence()>'
        status: '@status_<numberBetween(1, 3)>'

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

Проверьте этот выпуск для получения дополнительной информации и подходов.

Но @ является ссылкой на другое приспособление, когда вы устанавливаете owner: '@user<numberBetween(1, 200)>', раздел user существует в том же файле yaml (или отдельном приспособлении). Обратите внимание, что эти образцы всегда имеют раздел User перед группой.

K. Weber 07.03.2024 12:06

Это возвращенная ошибка: не удалось найти прибор «status2».

K. Weber 07.03.2024 12:07

Это действительно возможно. Но сущность status связана с другими объектами, не связанными с прибором, поэтому это заставило бы меня удалять все статусы при каждой перезагрузке прибора, а для удаления всех статусов мне нужно будет удалить все другие связанные данные, поэтому я хотел использовать существующие значения в БД. Попробую, если не найду другого решения.

K. Weber 07.03.2024 12:23

Нет, я имею в виду предложенное решение: если я создам фикстуру для сущности Status, мне придется удалять ее при каждой перезагрузке фикстуры.

K. Weber 07.03.2024 12:33

Да, это будет правильным решением, если вы используете приспособления.

yivi 07.03.2024 12:34

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