Laravel 5.5 获取最近更新的多条记录

Laravel 5.5 get multiple records which are recently updated

我正在显示最近更改的多条记录。在以前的视图中有一个按钮,当我单击时,所有记录的 kitchen_status 从 0 变为 1。之后如果我添加更多记录并将其 kitchen_status 更改为 1,那么我只想显示最新的kitchen_status 为 1 的记录。这是我试图得到的:

    $orders = Order::where([
    'kitchen_status' => 1,
    'delivery_status' => 0,
])
    ->where('updated_at', \DB::raw("(select max(`updated_at`) from orders)"))
    ->get();

这很好用,但是当我添加默认值为 0 的 kitchen_status 的新记录时,会显示 none 记录。我知道 last ->where() 是错误的,但我怎样才能让它正确?

简而言之,我想显示所有最新的 updated_at 的记录。一些小帮助将挽救我的一天。

我不确定我是否 100% 理解了这个问题,但我认为您要找的是

Model::whereDate('updated_at', '>', \Carbon::now()->subHours(2));

这将为您提供 updated_at 超过 2 小时的所有记录。该参数可以更改为其他值,例如 10 小时等,如果您需要更大的范围,还有一个 subDays(), subMonths() 等。

您可以将最近的条目数限制为

$orders = Order::where([
    'kitchen_status' => 1,
    'delivery_status' => 0,
])->orderBy('updated_at','DESC')->limit(20)
    ->get();

您可以将号码更改为您想要的号码。

我认为这会有所帮助。

$orders = Order::where([
'kitchen_status' => 1,
'delivery_status' => 0,])->orderBy('update_at','DESC')->paginate(15);

我已经尝试过这段代码并且它工作完美,但我仍然在寻找简短而纯粹的方法。这是我找到的代码:

$orders = Order::select('orders.*')
->where('kitchen_status', 1)
->where('delivery_status', 0)
->where('updated_at', \DB::raw("(SELECT max(updated_at) FROM orders WHERE kitchen_status = 1 AND delivery_status = 0)"))
->get();

将此答案确认为正确答案好还是请添加更多答案。