Laravel。不能使用其他特性软删除模型

时间:2014-11-24 20:04:14

标签: laravel-4 soft-delete

我正在实施一个应用程序,其中某些内容应首先由管理员批准。所以我在我的模型中添加了一个需要批准的专栏。

应用程序中的普通用户应该只能看到管理员批准的模型,因此我在模型中添加了一个全局范围,以仅过滤管理员批准的记录。我的问题是,这与软删除无法正常工作。

当管理员决定不批准某些内容时,他应该可以将其删除。所以,我做这样的事情:

$model = Model::withUnapproved()->find($model_id);
if(!$model){
   //handle error
}
$model->delete();

此代码实际上找到了模型,但执行删除时,查询为:

DELETE FROM table WHERE deleted_at IS NULL and approved_by IS NOT NULL and model_id=`id`;

为什么要添加and approved_by IS NOT NULL?这会导致找到任何记录,因此不会删除任何记录。

如果我将其更改为$model->withUnapproved()->delete(),则删除所有记录。

这有什么灯?提前致谢

1 个答案:

答案 0 :(得分:0)

  

为什么要添加和approved_by IS NOT NULL?这会导致找到任何记录,因此不会删除任何记录。

您的全球范围就是全球范围。它适用于该模型的所有Eloquent查询,包括删除。