我正在尝试使此查询工作:
$deleteSubmissions = ViewedSubmission::where('user_id', Auth::user()->id)
->latest()
->skip(5)
->delete();
我想删除身份验证用户的所有查看提交记录,但最新的 5 条记录除外。我怎样才能做到这一点?目前,尽管有超过 5 条记录,但这不会删除任何内容。
我会这样处理它:
$keep = ViewedSubmission::where('user_id', Auth::user()->id)
->latest()
->take(5)
->pluck('id');
ViewedSubmission::where('user_id', Auth::user()->id)
->whereNotIn('id', $keep)
->delete();
编辑:您可以选择最新的 5 条记录,但给定数组除外,然后删除。
$except = 5;
ViewedSubmission::where('user_id', Auth::user()->id)
->latest()
->skip($except)
->get()
->each(function($row){ $row->delete(); });
例如,如果您与用户 id(一对多(有关系,例如viewedSubmissions
您可以这样做:
$except = 5;
Auth::user()->viewedSubmissions()
->latest()
->skip($except)
->get()
->each(function($row){ $row->delete(); });