[英]Symfony2: ManyToMany mapping withing one Entity > SQL Error
前言:我正在开发一个在线测验系统。 我有一个实体“测验”。 该实体可以是编译测验,也可以不是。 如果它是一个编译测验,则它包含与之链接的其他非编译测验。 一个非编译测验可以链接到多个编译测验,因此关系映射在实体“ Quiz”内部为ManyToMany。
从Entity \\ Quiz.php中提取:
/**
* @var boolean
*
* @ORM\Column(name="compilation", type="boolean")
* @Ser\Expose
*/
private $compilation;
/**
* @var Quiz[]
*
* @ORM\ManyToMany(targetEntity="CriticalReading\QuizBundle\Entity\Quiz", inversedBy="compiledQuiz")
*/
private $subQuizes;
/**
* @var Quiz
*
* @ORM\ManyToMany(targetEntity="CriticalReading\QuizBundle\Entity\Quiz", mappedBy="subQuizes")
*/
private $compiledQuiz;
模式验证未显示任何错误,但是仅由一列“ quiz_id”创建了由该理论自动创建的链接表(quiz_quiz)。 另外,当尝试使用$compilationQuiz->addSubQuiz($subQuiz);
测验链接到编译测验时$compilationQuiz->addSubQuiz($subQuiz);
Symfony2返回错误:
使用参数[1,null]执行'INSERT INTO quiz_quiz(quiz_id,quiz_id)VALUES(?,?)'时发生异常:SQLSTATE [42000]:语法错误或访问冲突:1110两次指定列'quiz_id'
由于Symfony2准则完全完全自动完成了链接表的整个处理和链接记录的创建,因此我不知道该如何解决此问题。
任何帮助/建议将不胜感激。
尝试显式指定列名称:
/**
* @ORM\ManyToMany(targetEntity="CriticalReading\QuizBundle\Entity\Quiz", inversedBy="compiledQuiz")
* @ORM\JoinTable(name="quiz_quiz",
* joinColumns={@ORM\JoinColumn(name="compiled_quiz_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="sub_quiz_id", referencedColumnName="id")}
* )
*/
private $subQuizes;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.