Алиса отказалась от уровня сохраняемости в версии 3.x.
При попытке перехода с 2.2 на 3.0.x…
мне нужно сначала загрузить и сохранить некоторые фикстуры (чтобы их id
заполнялись), а затем ссылаться на идентификаторы этих сущностей из другой группы файлов фикстур.
Как этого добиться?
Я предполагаю, что мне, возможно, придется зацикливать и загружать несколько наборов файлов фикстур по отдельности, но я понятия не имею, как ссылки на объекты будут существовать в таком сценарии.
Моя установка в настоящее время не работает, но вызывает следующую ошибку:
Недопустимое значение свойства "fooDbId" объекта "bar1" (класс: Doctrine\Model\Bar).
Мой FixturesLoader.php:
// …
use Nelmio\Alice\Loader\NativeLoader as AliceLoader;
// …
$loader = new AliceLoader();
$entities = $loader
->loadFiles(
[
__DIR__.'/foo.yml',
/* ↓ Some more fixture files ↓ */,
# Here comes "bar" which references persisted foo entities id
# through its "fooDbId" property using expresion '@foo1->id'
__DIR__.'/bar.yml'
],
['locale' => 'en_EN']
)
->getObjects();
foreach ($entitites as $entity) {
$manager->persist($entity)
}
$manager->flush();
bar.yml :
Doctrine\Model\Bar:
bar1:
fooDbId: '@foo1->id'
# ↓ More properties ↓
Редактировать
fooDbId
- это не "настоящее" поле отношения/внешнего ключа, а 0
идентификатор объекта Foo с левым дополнением. (Bar::setFooDbId отвечает за операцию заполнения слева). Пример: для экземпляра Foo со значением свойства id 87
связанный экземпляр Bar должен иметь свойство fooDbId
, равное '00000087'.
Спасибо.