我想检查我的语法是否适用于级联删除下列实体,我希望在删除Subject或级联用户时删除与它们相关的Teacher实体。Doctrine 2 ORM级联删除相关实体
教师实体
class Teacher{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
**/
protected $id;
/** @ORM\Column(type="integer")
* @ORM\ManyToOne(targetEntity="Subject")
* @ORM\JoinColumn(name="subjectId", referencedColumnName="id", onDelete="CASCADE")
* */
protected $subjectId;
/** @ORM\Column(type="integer")
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(name="userId", referencedColumnName="id", onDelete="CASCADE")
* */
protected $userId;
}
主题实体
/** @ORM\Entity */
class Subject{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/** @ORM\Column(type="integer") */
protected $sectionId;
/** @ORM\Column(type="string") */
protected $subjectName;
用户实体
/** @ORM\Entity */
class User {
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/** @ORM\Column(type="string") */
protected $username;
/** @ORM\Column(type="string") */
protected $password;
/** @ORM\Column(type="string") */
protected $first_name;
/** @ORM\Column(type="string") */
protected $middle_name;
/** @ORM\Column(type="string") */
protected $last_name;
/** @ORM\Column(type="string") */
protected $sex;
/** @ORM\Column(type="date") */
protected $dob;
/** @ORM\Column(type="boolean") */
protected $is_active;
/** @ORM\Column(type="boolean") */
protected $is_admin;
/** @ORM\Column(type="string") */
protected $email;
/** @ORM\Column(type="string") */
protected $address;
/** @ORM\Column(type="string") */
protected $bloodTypeId;
/** @ORM\Column(type="string") */
protected $photo;
/** @ORM\Column(type="integer") */
protected $userTypeId;
因为它似乎并没有在工作的时候删除用户或一个主题,我期待与他们的领域相关的老师也被删除。
结帐[这个答案]( http://stackoverflow.com/questions/6328535/on-delete-cascade-with-doctrine2)。您正在使用'@ joinColumn'中的数据库级联级联而不是'cascade = {“remove”}'进行ORM级别删除。如果您想要数据库级别级联,那么您还需要运行创建/更新架构cli工具,以便将它们添加到数据库中。 – AlexP