Я устанавливаю файл 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 (не в моем случае, связанный объект уже находится в базе данных), и на этот вопрос нет ответа.




Прямо из документации:
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 перед группой.
Это возвращенная ошибка: не удалось найти прибор «status2».
Это действительно возможно. Но сущность status связана с другими объектами, не связанными с прибором, поэтому это заставило бы меня удалять все статусы при каждой перезагрузке прибора, а для удаления всех статусов мне нужно будет удалить все другие связанные данные, поэтому я хотел использовать существующие значения в БД. Попробую, если не найду другого решения.
Нет, я имею в виду предложенное решение: если я создам фикстуру для сущности Status, мне придется удалять ее при каждой перезагрузке фикстуры.
Да, это будет правильным решением, если вы используете приспособления.
Кроме того, где я могу найти полную ссылку на такие функции, как
<firstName()>, <lastName()>, <sentence()>и т. д.?