QuestionとSolutionMethodという名前の2つのPHPモデルクラスがあります。カテゴリには多くのアイテムが含まれる場合があり、アイテムは多くのカテゴリに属する場合があります。両方のクラスに対してManyToManyリレーションを作成しました。
class Question {
/**
* @ORM\ManyToMany(targetEntity="SolutionMethod", mappedBy="questions", cascade={"persist"})
*/
private $solutions;
/**
* Add items
*
* @param Acme\MyBundle\Entity\SolutionMethod $solution
*/
public function addItems(\Acme\MyBundle\Entity\SolutionMethod $solution) {
$this->solutions[] = $solutions;
}
/**
* Get solutions
*
* @return Doctrine\Common\Collections\Collection
*/
public function getSolutions() {
return $this->solutions;
}
[...]
}
と
class SolutionMethod {
/**
* @ORM\ManyToMany(targetEntity="Question", inversedBy="solutions", cascade={"persist"})
* @ORM\JoinTable(name="question_solution")
*/
private $questions;
/**
* Add questions
*
* @param Acme\MyBundle\Entity\Question $question
*/
public function addCategories(\Acme\MyBundle\Entity\Question $question) {
$this->questions[] = $question;
}
/**
* Get questions
*
* @return Doctrine\Common\Collections\Collection
*/
public function getQuestions() {
return $this->questions;
}
[...]
}
私のフォームでは、この関連付けは必須属性を持つ複数選択でレンダリングされますが、SolutionMethodなしでいくつか質問がありますが、保存できず、必要なメッセージが表示されます。
解決しました!
解決策はとても簡単で、私をばかみたいに感じさせます
class QuestionType extends AbstractType {
public function buildForm(FormBuilder $builder, array $options) {
$builder
->add('solutions', null, array('required' => false))
[...]
;
}
}