拉拉维尔:删除除最新 5 个以外的所有内容

  • 本文关键字:删除 最新 php laravel
  • 更新时间 :
  • 英文 :


我正在尝试使此查询工作:

$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(); });

最新更新