我有一个场景,记录是这样的:
日期
2018年1月15日
2018年1月16日
现在我需要做的就是删除最后一个日期。我需要删除包含2018-01-15
。
我的代码是这样的:
public function deletelatDate()
{
// $datedel = '2018-04-03';
$datedel = Attendance::sortBy('date', 'desc')->first();
// $query->sortBy('date', 'desc')->first();
DB::table('attendances')->where('date', $datedel )->delete();
return back()->with('success','Last attendance entries successfully deleted');
}
您对我如何解决这个问题有什么建议吗? 感谢。
答案 0 :(得分:2)
您可以使用latest
获取最新记录:https://laravel.com/docs/5.5/queries#ordering-grouping-limit-and-offset
public function deleteLatest()
{
// $datedel = today()->format('Y-m-d'); <-- use today's date
$datedel = '2018-04-03';
// find the record to delete
$toDelete = Attendance::where('date', $datedel)->oldest('date')->first();
// only perform delete if a record is found
if($toDelete) {
$toDelete->delete();
return back()->with('success','Last attendance entries successfully deleted');
}
return back()->with('error', 'No attendance entry found for this date: ' . $datedel);
}
答案 1 :(得分:2)
使用orderBy
并在获得第一条记录后获取列date
public function deletelatDate()
{
$datedel = Attendance::orderBy('date', 'asc')->first();
DB::table('attendances')->where('date', $datedel->date )->delete();
return back()->with('success','Last attendance entries successfully deleted');
}
在发送成功消息之前还要检查查询是否成功