我想检索插入到表中的最后一个文件。我知道方法first()存在,并为您提供表中的第一个文件,但我不知道如何获得最后一个插入。


当前回答

使用模型::(user_id, user_id美元)- >最新()- >先()- > (); 它将只返回一条记录,如果没有找到,它将返回null。 希望这能有所帮助。

其他回答

如果表有日期字段,这(User::orderBy('created_at', 'desc')->first();)是最好的解决方案,我认为。 但没有日期字段,Model::orderBy('id', 'desc')->first()->id;我相信这是最好的解决办法。

获取最后的记录细节

模型::所有()- > ();或 模型:orderBy(“id”,desc) - > ();

获取最后一个记录id

模型::所有去年()()- > - > id;或 模型:orderBy(“id”,desc) - >第()- > id;

你可以使用Laravel提供的最新范围与你想要过滤的字段,让我们说它将按ID排序,然后:

Model::latest('id')->first();

因此,在Laravel默认情况下,你可以避免通过created_at字段进行排序。

很多答案,有些我不太同意。所以我将再次总结我的评论。

如果你刚刚创建了一个新对象。 默认情况下,当您创建一个新对象时,Laravel将返回新对象。

$lastCreatedModel = $model->create($dataArray); 

dd($lastCreatedModel); // will output the new output
echo $lastCreatedModel->key; // will output the value from the last created Object

还有一种方法是将all()方法与(last()方法和first()方法结合起来而不附带条件。

非常糟糕!不要那样做!

Model::get()->last();` // the most recent entry
Model::all()->last();` // the most recent entry

Model::get()->first();` // the oldest entry
Model::all()->first();` // the oldest entry

Which is basically the wrong approach! You get() all() the records, and in some cases that can be 200,000 or more, and then pick out just one row. Not good! Imagine your site is getting traffic from Facebook and then a query like that. In one month that would probably mean the CO² emissions of a city like Paris in a year. Because the servers have to work unnecessarily hard. So forget this approach and if you find it in your code, replace it/rewrite it. Maybe you don't notice it with 100 data sets but with 1000 and more it can be noticeable.

非常好的是:

Model::orderBy('id', 'desc')->last(); // the most recent record
Model::latest('id')->first(); // the most recent record
Model::latest('id')->limit(1)->get(); // the most recent record
Model::orderBy('id', 'desc')->limit(1)->get(); // the most recent entry
Model::orderBy('id', 'desc')->first(); // the most recent entry

Model::orderBy('id', 'asc')->first(); // the oldest entry
Model::orderBy('id', 'asc')->limit(1)->get(); // the oldest entry
Model::orderBy('id', 'asc')->first(); // the oldest entry

如果在此上下文中使用orderBy,则应始终将主键用作基,而不是create_at。

使用模型::(user_id, user_id美元)- >最新()- >先()- > (); 它将只返回一条记录,如果没有找到,它将返回null。 希望这能有所帮助。