[英]Laravel: Delete all except latest 5
我试图使这个查询工作:
$deleteSubmissions = ViewedSubmission::where('user_id', Auth::user()->id)
->latest()
->skip(5)
->delete();
我想删除 auth 用户的所有 ViewedSubmissions 记录,除了最新的 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
命名为viewedSubmissions
您可以这样做:
$except = 5;
Auth::user()->viewedSubmissions()
->latest()
->skip($except)
->get()
->each(function($row){ $row->delete(); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.