Alice 在 3.x 中放弃了持久层。
在尝试从 2.2 迁移到 3.0.x 时,...<br> 我需要先加载并保留一些固定装置(以便id
填充它们),然后从另一组固定装置文件中引用这些实体 ID。
如何实现?
我想我可能必须分别循环和加载多个夹具文件集,但我不知道在这种情况下对象引用将如何存在。
我的设置目前不起作用,但会导致提示以下错误:
对象“bar1”(类:Doctrine\Model\Bar)的属性“fooDbId”给出的值无效。
我的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 实体 ID。(Bar::setFooDbId 负责左填充操作)。例如:给定一个 Foo 实例,其id属性值为87
,关联的 Bar 实例的fooDbId
属性应等于“00000087”。
谢谢你。