2016-04-11 59 views
2

我正在使用Laravel 5.2。Laravel Soft Delete未在數據透視表中使用

我有3個表格:book,userbook_user(數據透視表)。

我想在我的數據透視表上使用軟刪除。當我將一本書給attach的用戶時,該關係被插入book_user表中。但是,當我與detach這種關係時,即使向透視表模型添加了use SoftDeletes,數據透視表中的記錄也被刪除。

我如何在我的數據透視表中執行軟刪除記錄,當我attachdetach

回答

3

我沒有嘗試使用數據透視表的軟刪除,但你說它不起作用。

只是一個想法,也許你可以使用sync而不是detach這樣;

在此之前,您需要將deleted_at列添加到book_user表中,作爲DATETIME而不是TIMESTAMP。因爲新版本的MYSQL不支持的TIMESTAMP類型。

軟刪除

$user->books()->sync(array(1 => array('deleted_at' => DB::raw('NOW()')))); 

獲取

您也可以把一個約束的貪婪加載:

public function books() 
{ 
    return $this 
    ->hasMany('Book') 
    ->whereNull('book_user.deleted_at'); 
}