我使用的是 Laravel 5.2。
我有 3 个表:book
、user
和 book_user
(数据透视表)。
我想在我的数据透视表上使用软删除。当我将一本书附加
给用户时,该关系将插入到book_user
表中。但是,当我分离
此关系时,即使我将use SoftDeletes
添加到数据透视表模型中,数据透视表中的记录也会被删除。
当我附加
或分离
时,如何对数据透视表中的记录实现软删除?
最佳答案
我没有尝试使用带有数据透视表的软删除,但你说它不起作用。
只是一个想法,也许你可以使用 sync
而不是像这样的 detach
;
在此之前,您需要将 deleted_at
列添加到 book_user
表中,作为 DATETIME
而不是 TIMESTAMP
。因为新版本的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');
}
关于php - Laravel 软删除在数据透视表中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555243/