2016-04-11 15 views
2

私はLaravel 5.2を使用しています。Laravel Soft Deleteピボットテーブルで動作しません

私はテーブルがbook,userbook_user(ピボットテーブル)の3つあります。

ピボットテーブルでソフト削除を使用します。ユーザーにattachの書籍がある場合、関係はbook_userテーブルに挿入されます。しかし、detachこの関係では、ピボットテーブルモデルにuse SoftDeletesを追加しても、ピボットテーブルのレコードは削除されます。

attachまたはdetachにピボットテーブルのレコードのソフト削除を実装するにはどうすればよいですか?

答えて

3

私はピボットテーブルでソフト削除を使用してみましたが、動作しないと言っています。

このようなdetachの代わりにsyncを使用できます。

は、その前に、あなたはDATETIMEの代わりTIMESTAMPとしてbook_userテーブルにdeleted_at列を追加する必要があります。 MYSQLの新しいバージョンはTIMESTAMPタイプのNULLをサポートしていないためです。

ソフトの削除

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

また、あなたは、イーガーロードに制約を置くことができる

を取得:

public function books() 
{ 
    return $this 
    ->hasMany('Book') 
    ->whereNull('book_user.deleted_at'); 
} 
関連する問題