我正在实施一个应用程序,其中某些内容应首先由管理员批准。所以我在我的模型中添加了一个需要批准的专栏。
应用程序中的普通用户应该只能看到管理员批准的模型,因此我在模型中添加了一个全局范围,以仅过滤管理员批准的记录。我的问题是,这与软删除无法正常工作。
当管理员决定不批准某些内容时,他应该可以将其删除。所以,我做这样的事情:
$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()
,则删除所有记录。
这有什么灯?提前致谢
答案 0 :(得分:0)
为什么要添加和approved_by IS NOT NULL?这会导致找到任何记录,因此不会删除任何记录。
您的全球范围就是全球范围。它适用于该模型的所有Eloquent查询,包括删除。