我想检查我的语法是否正确,以便级联删除以下实体,我希望当我删除主题或用户时,它会级联并删除与之相关的教师实体。
教师实体
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;
因为当我删除用户或主题时它似乎不起作用,我希望删除与其字段相关的教师。
答案 0 :(得分:0)
如果你在堆栈上搜索 overlflow ,你的答案已经 here 。
Doctrine中有两种级联:
1)ORM级别 - 在关联中使用
cascade={"remove"}
- 这是在UnitOfWork
中完成的计算,不会影响数据库结构。删除对象时,UnitOfWork
将遍历关联中的所有对象并将其删除。2)数据库级别 - 在关联
onDelete="CASCADE"
上使用joinColumn
- 这会将删除级联添加到数据库中的外键列:
您的onDelete="CASCADE"
主题和教师内部用户将获得以下结果:当您删除教师时,操作将级联到主题和用户(因此也会删除它们)。我想这不是你想要的......
答案 1 :(得分:0)
不,我想在删除用户时删除教师,当我删除主题时也会删除教师