Ben*_*der 3 symfony doctrine-orm
据我所知,灯具将按照给定的顺序加载,基于getOrder()每个灯具文件的方法返回的值.在灯具之间共享对象.出于某种原因,学说试图按字母顺序(类名)加载下面的装置.
在下面的示例中,它必须加载Student,Subject和StudentSubject顺序,但是,它会尝试加载Student,StudentSubject和Subject,这会导致问题,因为StudentSubject在Student和Subject之前不能存在.协会:Student (1 -> N) StudentSubject (N <- 1) Subject
出现这种情况的原因是什么?
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; }
}
Run Code Online (Sandbox Code Playgroud)
错误:
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
Run Code Online (Sandbox Code Playgroud)
composer.json
"require-dev": {
"sensio/generator-bundle": "~2.3",
"doctrine/doctrine-fixtures-bundle": "2.2.0",
"doctrine/data-fixtures": "1.1.1"
},
Run Code Online (Sandbox Code Playgroud)
geo*_*eoB 18
更换的情况下,FixtureInterface与OrderedFixtureInterface
例如:
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;