我正在显示最近更改的多条记录。在上一个视图中,有一个按钮,当我点击时,所有记录' 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的新记录时,则不会显示任何记录。我知道最后一次 - > where()错了,但我该怎么做呢?
简而言之,我想用最新的updated_at显示所有记录。一些小帮助将节省我的一天。
答案 0 :(得分:1)
我认为这可以提供帮助。
[128 122 124 123 134 138 143 142 139 135 144 149 155 156 148 144 143 144
151 152 159 152 160 150 157 151 155 153 155 156 154 151 145 139 128 132
124 131 130 129 123 115 104 100 94 94 88 85 78 74 65 59 52 48
43 45 46 45 40 30 19 10 6 7 14 15 12 0 -8 1 23 51
72 63 55 26 23 20 31 36 40 35 27 22 15 15 7 9 1 -2
-4 0 -3 -4 -18 -25 -25 -12 -1 -9]
答案 1 :(得分:1)
我曾经尝试过这段代码并且它工作得很完美,但我仍然看起来简短而纯粹的方法。这是我发现的代码:
$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();
将此答案作为正确答案检查是否合适,或者请添加更多答案。
答案 2 :(得分:0)
我不确定我是否理解这个问题100%但是我认为你在寻找的是
Model::whereDate('updated_at', '>', \Carbon::now()->subHours(2));
这将为您提供updated_at
超过2小时的所有记录。如果您需要更大的范围,可以将参数更改为10小时等其他内容,还有subDays(), subMonths()
等。
答案 3 :(得分:0)
您可以将所需的最新条目数限制为
$orders = Order::where([
'kitchen_status' => 1,
'delivery_status' => 0,
])->orderBy('updated_at','DESC')->limit(20)
->get();
您可以将数字更改为您想要的数字。