2013-12-12 21 views
1

我使用genemu_jqueryselect2_entity了多重選擇字段的表單(位於一個奏鳴曲管理類)中的所謂的統一(大學)實體:選定的屬性不存儲到數據庫

->add('courses', 'genemu_jqueryselect2_entity',array('multiple' => true, 'class' => 'PROJECT\UniBundle\Entity\Course')) 

但所選條目不會填充到我的實體中。使用螢火蟲,我可以檢測到,課程的ID通過POST正確傳遞。

也許該字段沒有正確映射到Uni實體,但我不知道爲什麼。

這是我的統一實體,它甚至沒有得到所謂的添加方法:用統一的課程屬性映射

public function addCourse(\PROJECT\UniBundle\Entity\Course $courses) 
    { 
     $this->courses[] = $courses; 

     return $this; 
    } 

我怎樣才能獲得該領域? 我該如何調試?

任何幫助將appriciated!

回答

0

我不知道爲什麼,但addCourse方法沒有調用。

無論如何,Tautrimas Pajarskas的回答對我來說是有用的,所以我給了upvote。

外鍵關係是我的代碼中必不可少的部分。

我實現它在大學奏鳴曲管理員這樣的:

private function addUniToCourses ($university) { 
    foreach($university->getCourses() as $course) { 
     if(!$course->getUniversities()->contains($university)) { 
      $course->addUniversity($university); 
     } 
    } 
} 

public function prePersist($university) { 
     $this->addUniToCourses($university); 
} 

public function preUpdate($university) { 
     $this->addUniToCourses($university); 
} 

這是解決我的問題。

0

嘗試創建方法setCourses

public function setCourses(\Doctrine\Common\Collections\Collection $courses) 
    { 
     $this->courses = $courses; 
... 
+0

謝謝你的回答,但是這種方法也沒有被調用。 – enigma

1

嘗試編寫方法是這樣的:

public function addCourse(\PROJECT\UniBundle\Entity\Course $course) 
{ 
    $this->courses[] = $course; 
    $course->setUniversity($this); // Or similar. 

    return $this; 
} 

否則外鍵沒有被設置在一個數據庫中的課程排。

+0

謝謝你的回答和提示,但addCourse方法甚至沒有被調用。 – enigma

0

我有同樣的問題前一段時間:Symfony2, $form->bind() not calling adder methods of entity

解決方案: 對於加法器(addCourse())被調用,您必須禁用by_reference選項字段:

->add('courses', 'genemu_jqueryselect2_entity', 
     array(
      'by_reference' => false, // This line should do the trick 
      'multiple' => true, 
      'class' => 'PROJECT\UniBundle\Entity\Course')) 
相關問題