我想檢查我的語法是否適用於級聯刪除下列實體,我希望在刪除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