删除laravel中具有最后日期的查询

时间:2018-05-10 09:19:35

标签: laravel laravel-5 laravel-5.5

我有一个场景,记录是这样的:

日期

  • 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'); 
}

您对我如何解决这个问题有什么建议吗? 感谢。

2 个答案:

答案 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'); 
   }

在发送成功消息之前还要检查查询是否成功