2017-04-14 48 views
0

當用戶想要刪除記錄(語言在我的情況下)我想防止刪除記錄(語言),如果它在系統中的任何其他表中引用。原理未能堅持記錄刪除

問題在於,即使在任何其他表中引用了我的情況下的語言(記錄)也會被刪除。我檢查了我在MySQL工作臺中的關係,它說在DELETE和ON UPDATE它RESTRICT動作,但由於某些原因,Doctrine/Symfony允許刪除相同的字段。

有人知道問題在哪裏嗎?

這裏有實體設置:

/** 
    * Many drivers have Many langauges (OWNING SIDE) 
    * 
    * @ORM\ManyToMany(targetEntity="Language", inversedBy="language", cascade={"persist"}) 
    * @ORM\JoinTable(name="bus_drivers_languages", 
    *  joinColumns={@ORM\JoinColumn(name="bus_driver_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="languages_id", referencedColumnName="id")} 
    *) 
    **/ 

    private $languages; 



/** 
    * @var ArrayCollection 
    * 
    * @ORM\ManyToMany(targetEntity="BusDriver", mappedBy="languages", cascade={"persist"}) 
    */ 
    protected $language; 

回答

0

您可以在數據庫級(您維護您的整個應用程序的一致性那樣)執行呢?

ALTER TABLE `table_name` 
ADD CONSTRAINT `constraint_name` 
FOREIGN KEY (`column_list`) 
REFERENCES `referenced_table` (`referenced_column_list`);