Laravel 如何在拉威尔获得最新的帖子?只有最新的

Laravel 如何在拉威尔获得最新的帖子?只有最新的,laravel,Laravel,我正在尝试拉取最新任务,然后在删除最新任务后设置该进度,以保持进度更新 所以,假设我首先解决了20%的任务,我增加了30%的进度,然后我得到了50%。但是,不知何故,我注意到所取得的进展是不正确的,我必须删除它,因此,进展必须回到20% 更直观一点: 20%+30%=50% 50%-30%=20% 话虽如此,在我的控制器中,我有以下内容: public function destroy(Request $request, $id) { $id = Progress::wh

我正在尝试拉取最新任务,然后在删除最新任务后设置该进度,以保持进度更新

所以,假设我首先解决了20%的任务,我增加了30%的进度,然后我得到了50%。但是,不知何故,我注意到所取得的进展是不正确的,我必须删除它,因此,进展必须回到20%

更直观一点:

20%+30%=50%

50%-30%=20%

话虽如此,在我的控制器中,我有以下内容:

public function destroy(Request $request, $id)
    {
        $id = Progress::where('id', $id)->first();
        $task = $id->task;
        $id->delete();
        $progress = $task->progresses->(dont know how to get the latest one ???);
        $task->progress = $progress->progress; /* we set the latest progress to be the current one */
        $task->update();
        $task->save();
        return response()->json([
        "code" => 200,
        "message" => "Progress deleted successfully"
        ]);
    }

如何获取最新的设置为当前的设置?

$task->progress->last

只需更改此查询即可

$id = Progress::where('id', $id)->first();
要获取最新记录,请单击此按钮

$id = Progress::where('id', $id)->latest('created_at')->get()->first();

latest是在Illumb\Database\Query\Builder类中定义的函数

$id = Progress::where('id', $id)->latest()->first(); //to get just the most recent created at.
默认情况下,它采用其中的created at列。您可以使用->latest'updated_at'将其设置为updated_at。
t将只按降序排列orderBy列,并取最后一个值。

如果使用where子句传递条件,则它将仅返回匹配id的行。因此,请删除where子句条件

只需调用最新的方法

$id = Progress::latest()->first();
而不是

$id = Progress::where('id', $id)->first();
这将返回最新的行

请注意,在最新使用的方法中,在列处创建_以查找最新的行。如果列名不是在列中创建的,则可以传递列名

$id = Progress::latest('created_at')->first();

我假设$task->progress是一个数字?如果是这样的话,你目前的做法是错误的,不是吗?如果此任务有3个进度,现在您删除了一个进度,那么您不能只获取最新的进度并更新任务,因为您需要剩余两个进度的合并进度?您需要汇总所有进度,然后将其保存到$task->progress中。应该使用此解决方案而不是accepted answer,因为在accepted answer中,首先获取所有集合的项目,然后选择最后一个项目。这个答案只是从DB中获取最新的项目,是可以接受的更快更好的解决方案。