Symfony 赢得';它们不会按给定的顺序加载,而是按字母顺序加载

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

据我所知,fixture将根据每个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"
},