Я пытаюсь создать модуль, в котором при создании нового вопроса я назначаю его разным областям, поэтому я думаю, что это должно быть отношение «многие ко многим» и получить другую таблицу «FSA_AreasQuestions», но я не могу получить ее. работать еще.
На самом деле у меня есть 3 таблицы:
-FSA_Questions
-FSA_Areas
-FSA_AreasQuestions
Вот как я это делаю:
Сущность FsaAreas:
class FsaAreas
{
/**
* @var \Doctrine\Common\Collections\Collection
* @ORM\ManyToMany(targetEntity="FsaQuestions", inversedBy="areas")
* @ORM\JoinTable(name="fsa_areasquestions")
*/
private $idQuestion;
/**
* Constructor
*/
public function __construct()
{
$this->idQuestion = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add idQuestion
*
* @param \FSABundle\Entity\FsaQuestions $idQuestion
*
* @return FsaAreas
*/
public function addIdQuestion(\FSABundle\Entity\FsaQuestions $idQuestion)
{
$this->idQuestion[] = $idQuestion;
return $this;
}
/**
* Remove idQuestion
*
* @param \FSABundle\Entity\FsaQuestions $idQuestion
*/
public function removeIdQuestion(\FSABundle\Entity\FsaQuestions $idQuestion)
{
$this->idQuestion->removeElement($idQuestion);
}
/**
* Get idQuestion
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getIdQuestion()
{
return $this->idQuestion;
}
}
Сущность FsaQuestions:
class FsaQuestions
{
/**
* @ORM\ManyToMany(targetEntity="FsaAreas", inversedBy="idQuestion")
*/
private $areas;
/**
* Constructor
*/
public function __construct()
{
$this->areas = new \Doctrine\Common\Collections\ArrayCollection;
}
/**
* Add Areas
* @param \FSABundle\Entity\FsaAreas $area
*
* @return FsaQuestions
*/
public function addArea(\FSABundle\Entity\FsaAreas $area){
$this->areas[] = $area;
return $this;
}
/**
* Remove Areas
* @param \FSABundle\Entity\FsaAreas $area
*/
public function removeArea(\FSABundle\Entity\FsaAreas $area){
$this->areas->removeElement($area);
}
/**
* Get Areas
* @return \Doctrine\Common\Collections\ArrayCollection;
*/
public function getAreas(){
return $this->areas;
}
}
В конце, когда я выполняю некоторые тесты, я получаю эту ошибку: Catchable Fatal Error: аргумент 1, переданный в FSABundle\Entity\FsaQuestions::addIdArea(), должен быть экземпляром FSABundle\Entity\FsaAreas, экземпляром Doctrine\Common\Collections\ArrayCollection задано
Это моя форма (FsaQuestionsType):
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title',TextType::class, array(
"required"=>"required",
"attr"=>array(
"class"=>"form-control form-control-title"
)))
->add('explanation',TextType::class, array(
"required"=>"required",
"attr"=>array(
"class"=>"form-control form-control-explanation"
)))
->add('question',TextType::class, array(
"required"=>"required",
"attr"=>array(
"class"=>"form-control form-control-question"
)))
->add('reactionplan',TextareaType::class, array(
"required"=>"required",
"attr"=>array(
"class"=>"form-control form-control-reactionPLan"
)))
->add('status','Symfony\Component\Form\Extension\Core\Type\CheckboxType', array(
"label"=>"Enabled:",
"required"=>false
))
// ->add('usrcreate')
// ->add('usrupdate')
// ->add('datecreate')
// ->add('dateupdate')
->add('idCategory',EntityType::class,array(
"class"=>"FSABundle:FsaCategories",
'choice_label' => 'name',
"attr"=>array("class"=>"form-control"
)))
->add('areas',EntityType::class,array(
"class"=>"FSABundle:FsaAreas",
'choice_label' => 'name',
'expanded' =>false,
'multiple' =>true,
// 'allow_add' => true,
// 'by_reference' => false,
"attr"=>array("class"=>"form-control"
)))
;
}
Любой совет? или что не так?