2015-11-27 21 views
0

我在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('[email protected]'); 

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

然而,我從學說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 

儘管該值已在燈具中定義。 什麼可能是此錯誤的來源?或爲什麼由教義生成的插入不包含值?

回答

1

在學校夾具嘗試改變的setCirconscription()參數:

public function load(ObjectManager $em) { 

     $ecole = new Etablissement(); 
     $ecole->setRne('0310211L'); 
     $ecole->setCirconscription($this->getReference('circo1')); 

     /.../ 

} 

而且不要忘了加載Circuit FixtureSchool Fixture

+0

爲什麼與'$這個 - does'it工作> getReference() '而不是對象管理器?只爲了解 –

+1

它的工作原理是因爲你的類擴展了'AbstractFixture':'抽象夾具類有助於管理夾具類之間的引用,以便設置其他夾具之間的關係' – scoolnico