Symfony 赢得';它们不会按给定的顺序加载,而是按字母顺序加载
据我所知,fixture将根据每个fixture文件的Symfony 赢得';它们不会按给定的顺序加载,而是按字母顺序加载,symfony,doctrine-orm,Symfony,Doctrine Orm,据我所知,fixture将根据每个fixture文件的getOrder()方法中返回的值按给定顺序加载。出于某种原因,条令试图以字母顺序(类名)加载下面的装置 在下面的示例中,它必须按Student、Subject和StudentSubject顺序加载,但它尝试加载Student、StudentSubject和Subject,这会导致问题,因为StudentSubject不能在Student和Subject之前存在。关联:Student(1->N)StudentSubject(N将Fixture
getOrder()
方法中返回的值按给定顺序加载。出于某种原因,条令试图以字母顺序(类名)加载下面的装置
在下面的示例中,它必须按Student、Subject和StudentSubject顺序加载,但它尝试加载Student、StudentSubject和Subject,这会导致问题,因为StudentSubject不能在Student和Subject之前存在。关联:
Student(1->N)StudentSubject(N将FixtureInterface
的实例替换为OrderedFixtureInterface
例如:
使用条令\Common\DataFixtures\OrderedFixtureInterface;
class StudentFixtures extends AbstractFixture implements FixtureInterface
{
public function load(ObjectManager $manager)
{
......
$this->addReference('student-1', $student);
......
}
public function getOrder() { return 1; }
}
class SubjectFixtures extends AbstractFixture implements FixtureInterface
{
public function load(ObjectManager $manager)
{
......
$this->addReference('subject-1', $subject);
......
}
public function getOrder() { return 2; }
}
class StudetSubjectFixtures extends AbstractFixture implements FixtureInterface
{
public function load(ObjectManager $manager)
{
......
$student = $this->getReference('student-1');
$subject = $this->getReference('subject-1');
......
}
public function getOrder() { return 3; }
}
Bc-MacBook-Pro:sport bc$ app/console doctrine:fixtures:load --no-interaction --no-debug
> purging database
> loading Football\FrontendBundle\DataFixtures\ORM\StudentFixtures
> loading Football\FrontendBundle\DataFixtures\ORM\StudentSubjectFixtures
[OutOfBoundsException]
Reference to: (mba) does not exist
"require-dev": {
"sensio/generator-bundle": "~2.3",
"doctrine/doctrine-fixtures-bundle": "2.2.0",
"doctrine/data-fixtures": "1.1.1"
},