Взять элемент прибора по ссылке в nelmio-alice

У меня есть набор светильников (здесь упрощение):

My\Entity\User:
  user_{1..10}:
    name: <firstName()>

My\Entity\Item:
  item_{1..10}:
    user: '@user_$current'
    data: <numberBetween(111111111, 999999999)>

Я хочу получить Item с идентификатором 4 внутри моего функционального теста phpunit.

Я не могу быть уверен, что ID автоинкремента начинается с 1. Это не 1 после TRUNCATE. Итак, это неправильный:

$item4 = $this->em->getRepository(Item::class)->find(4);

Как я могу получить ссылку на item_4?

Я не знаю элегантного решения, так что насчет переназначения клавиш?

J. Knabenschuh 22.03.2019 15:08

Можете ли вы добавить часть вашего кода, которая загружает фикстуры? Загрузчик, загружающий файл фикстуры, вернет массив со всеми сущностями. Из этого массива вы можете получить сущность вместо того, чтобы извлекать ее через диспетчер сущностей. Если вы хотите убедиться, что вы можете найти его, вы можете использовать идентификатор этого объекта, чтобы перейти к find()

dbrumann 22.03.2019 16:39
Стоит ли изучать 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
2
650
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете получить объекты, сгенерированные из файла фикстур, непосредственно из загрузчика:

$loader = new Nelmio\Alice\Loader\NativeLoader();
$objectSet = $loader->loadFile(__DIR__.'/fixtures.yml');

$objectSet должен содержать все ваши объекты по их псевдонимам, чтобы вы могли получить конкретный элемент и напрямую работать с ним или снова получить его, используя свой репозиторий.

$fixtureItem4 = $objectSet['item_4'];
$persistedItem4 = $this->em->getRepository(Item::class)->find($fixtureItem4->getId());

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