【发布时间】:2019-08-20 12:01:38
【问题描述】:
我正在尝试制作一个模块,当我创建一个新问题时将其分配给不同的区域,所以我认为它应该是多对多关系并获得另一个表“FSA_AreasQuestions”,但我不能让它开始工作吧。
其实我有 3 张桌子:
-FSA_问题
-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;
}
}
最后,当我做一些测试时,我得到了这个错误: 可捕获的致命错误:传递给 FSABundle\Entity\FsaQuestions::addIdArea() 的参数 1 必须是 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"
)))
;
}
有什么建议吗?或者有什么问题?
【问题讨论】:
标签: php doctrine-orm many-to-many symfony-2.8