繁体   English   中英

Symfony2:具有一个实体的ManyToMany映射> SQL错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM