带有顺序的 Symfony5 固定装置 - getOrder() 不起作用
Symfony5 fixtures with order - getOrder() doesn't work
当我添加新的灯具文件时
/**
* {@inheritdoc}
*/
public function load(ObjectManager $manager): void
{
// get user fixtures
$user = $this->getReference(LoadUserData::USER_REFERENCE);
$userSecond = $this->getReference(LoadUserData::USER_TWO_REFERENCE);
$productFirst = Product::create($user, 'title1', 'title1', 'description3', null, null);
$manager->persist($productFirst);
$productSecond = Product::create($user, 'title2', 'title2', 'description2', null, null);
$manager->persist($productSecond);
$productThird = Product::create($userSecond, 'title3', 'title3', 'description3', null, null);
$manager->persist($productThird);
$manager->flush();
}
/**
* @return array
*/
public static function getGroups(): array
{
return ['demo', 'default'];
}
我发现了错误
purging database
loading DataFixtures\LoadUserData
In ReferenceRepository.php line 154:
Reference to "ROLE_USER" does not exist
Class LoadRoleData 有方法 getOrder(),但它不起作用。
public function getOrder()
{
return 1; // the order in which fixtures will be loaded
}
早些时候都完成了。
purging database
loading DataFixtures\LoadRoleData
loading DataFixtures\LoadUserData
...
更新:
Class LoadUserData 有
/**
* {@inheritdoc}
*/
public function getDependencies()
{
return [
LoadRoleData::class
];
}
但是也行不通((
如何在 Symfony5 中设置 Role Fixtures 的顺序?
你应该让 Symfony 决定,而不是你决定插入 fixtures 的顺序。
为此,您的夹具 类 应该实现 DependentFixtureInterface
并覆盖方法 getDependencies()
。在您的情况下,它应该如下所示:
<?php
namespace App\DataFixtures;
class LoadUserData extends Fixture implements DependentFixtureInterface
{
public function getDependencies()
{
return [
LoadRoleData::class,
];
}
}
现在,Symfony 会知道它需要先插入 LoadRoleData。
使用DependentFixtureInterface
,如果你已经正确设置了依赖关系,你就永远不必担心插入的顺序。
当我添加新的灯具文件时
/**
* {@inheritdoc}
*/
public function load(ObjectManager $manager): void
{
// get user fixtures
$user = $this->getReference(LoadUserData::USER_REFERENCE);
$userSecond = $this->getReference(LoadUserData::USER_TWO_REFERENCE);
$productFirst = Product::create($user, 'title1', 'title1', 'description3', null, null);
$manager->persist($productFirst);
$productSecond = Product::create($user, 'title2', 'title2', 'description2', null, null);
$manager->persist($productSecond);
$productThird = Product::create($userSecond, 'title3', 'title3', 'description3', null, null);
$manager->persist($productThird);
$manager->flush();
}
/**
* @return array
*/
public static function getGroups(): array
{
return ['demo', 'default'];
}
我发现了错误
purging database
loading DataFixtures\LoadUserData
In ReferenceRepository.php line 154:
Reference to "ROLE_USER" does not exist
Class LoadRoleData 有方法 getOrder(),但它不起作用。
public function getOrder()
{
return 1; // the order in which fixtures will be loaded
}
早些时候都完成了。
purging database
loading DataFixtures\LoadRoleData
loading DataFixtures\LoadUserData
...
更新: Class LoadUserData 有
/**
* {@inheritdoc}
*/
public function getDependencies()
{
return [
LoadRoleData::class
];
}
但是也行不通((
如何在 Symfony5 中设置 Role Fixtures 的顺序?
你应该让 Symfony 决定,而不是你决定插入 fixtures 的顺序。
为此,您的夹具 类 应该实现 DependentFixtureInterface
并覆盖方法 getDependencies()
。在您的情况下,它应该如下所示:
<?php
namespace App\DataFixtures;
class LoadUserData extends Fixture implements DependentFixtureInterface
{
public function getDependencies()
{
return [
LoadRoleData::class,
];
}
}
现在,Symfony 会知道它需要先插入 LoadRoleData。
使用DependentFixtureInterface
,如果你已经正确设置了依赖关系,你就永远不必担心插入的顺序。