【问题标题】:Doctrine Fixture Data load - Value missing from insertDoctrine Fixture 数据加载 - 插入中缺少值
【发布时间】:2016-03-01 18:45:14
【问题描述】:

我在我的 symfony2/doctrine2 项目中创建了以下实体(学校和电路),具有多对一(电路包含一所或多所学校)双向关系。 这是Schoool.orm.ymlcircuit.orm.yml 的定义

我正在尝试为每个实体加载相应的数据夹具,如下所示:

 //Circuit Fixture
    public function load(ObjectManager $em) {
            $newCirco = new Circonscription();
            $newCirco->setId(1);
            $newCirco->setLibelle('Circuit1');

            $em->persist($newCirco);
            $em->flush();

            $this->addReference('circo1', $newCirco);
    }


    //School Fixture
     public function load(ObjectManager $em) {
            //Ecoles - Circo 1
            $ecole = new Etablissement();
            $ecole->setRne('0310211L');
            $ecole->setCirconscription($em->merge($this->getReference('circo1')));
            $ecole->setLibelle('FRANCE');
            $ecole->setAdresse('6 AVENUE DE Test');
            $ecole->setTelphone('05xxxxxxxx');
            $ecole->setEmail('xxxxxx@xxxxxxxxe.fr');

            $em->persist($ecole);
            $em->flush();
            $this->addReference('ecole', $ecole);
    }

但是,我从 Doctrine 收到了一个与完整性违规相关的NotNullConstraintViolationException

 An exception occurred while executing 'INSERT INTO etablissement (rne, libe
  lle, adresse, telphone, email, circo_id) VALUES (?, ?, ?, ?, ?, ?)' with pa
  rams ["0310241U", null, null, null, null, null]:
  SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'libelle' cann
  ot be null

虽然该值已在夹具中定义。 什么可能是这个错误的来源?或者为什么学说生成的插入不包含这些值?

【问题讨论】:

    标签: symfony orm doctrine-orm fixtures


    【解决方案1】:

    在你的学校装置中尝试改变setCirconscription()的参数:

     public function load(ObjectManager $em) {
    
            $ecole = new Etablissement();
            $ecole->setRne('0310211L');
            $ecole->setCirconscription($this->getReference('circo1'));
    
            /.../
    
    }
    

    别忘了在School Fixture之前加载Circuit Fixture

    【讨论】:

    • 为什么它适用于$this->getReference() 而不是对象管理器?只是为了理解
    • 因为你的类扩展了AbstractFixture: Abstract Fixture class helps to manage references between fixture classes in order to set relations among other fixtures
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多