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


当前回答

如果你正在寻找你刚刚用Laravel 3和4插入的实际行,当你在一个新模型上执行保存或创建操作时,如下所示:

$user->save();

-or-

$user = User::create(array('email' => 'example@gmail.com'));

然后将返回插入的模型实例,并可用于进一步的操作,例如重定向到刚刚创建的用户的配置文件页面。

在小容量系统上查找最后插入的记录几乎可以一直工作,但如果您必须同时插入,您可能最终会查询到错误的记录。在需要更新多个表的事务系统中,这确实会成为一个问题。

其他回答

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

如果你正在寻找你刚刚用Laravel 3和4插入的实际行,当你在一个新模型上执行保存或创建操作时,如下所示:

$user->save();

-or-

$user = User::create(array('email' => 'example@gmail.com'));

然后将返回插入的模型实例,并可用于进一步的操作,例如重定向到刚刚创建的用户的配置文件页面。

在小容量系统上查找最后插入的记录几乎可以一直工作,但如果您必须同时插入,您可能最终会查询到错误的记录。在需要更新多个表的事务系统中,这确实会成为一个问题。

您将需要按照您现在正在排序的相同字段进行排序,但是降序。 举个例子,如果你有一个名为upload_time的上传时间戳,你可以这样做;

Pre-Laravel 4

return DB::table('files')->order_by('upload_time', 'desc')->first();

Laravel 4及以上版本

return DB::table('files')->orderBy('upload_time', 'desc')->first();

适用于Laravel 5.7及以上版本

return DB::table('files')->latest('upload_time')->first();

这将按上传时间、降序对文件表中的行进行排序,并选择第一个。这将是最新上传的文件。

老实说,这太令人沮丧了,我几乎不得不通过这里的所有答案来发现他们中的大多数都不是我想要的。事实上,我只想在浏览器中显示以下内容:

在我的表上创建的最后一行 只有一个资源

我并没有打算对一组资源进行排序,并以递减的方式排列列表,下面这行代码是我在Laravel 8项目中所使用的。

Model::latest()->limit(1)->get();

不知何故,在laravel 5.3中,上述所有内容似乎都不适用, 所以我用以下方法解决了自己的问题:

Model::where('user_id', '=', $user_id)->orderBy('created_at', 'desc')->get();

希望我能保释某人。