如何与外键关系一起删除两行

时间:2013-10-07 12:34:11

标签: mysql doctrine-orm

我有两个表,这两个表有关系,如

class Lesson
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;



class TicketUse  
{
/**
 *
 * @ORM\ManyToOne(targetEntity="Acme\UserBundle\Entity\Lesson")
 * @ORM\JoinColumn(name="lessonId", referencedColumnName="id")
 */

private $lessonId;

这两个表的关系是。

如果Lesson中存在一行,则ticketUse中的一行存在或不存在。

如果存在ticketUse中的一行,该行始终与Lesson中的行组合。

当我尝试删除课程行'DELETE FROM Lesson WHERE id = 1'

显示错误。

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails

我想在删除课程时自动删除TicketUse。

有没有很好的方法可以同时删除它们?

我每个都有两个写删除句子?

1 个答案:

答案 0 :(得分:3)

对于 FOREIGN KEY 关系,添加ON UPDATE CASCADE
然后你就可以根据自己的需要删除了 当您删除父级时,更改将自动反映给孩子。