我想检索插入到表中的最后一个文件。我知道方法first()存在,并为您提供表中的第一个文件,但我不知道如何获得最后一个插入。
当前回答
你可以使用Laravel提供的最新范围与你想要过滤的字段,让我们说它将按ID排序,然后:
Model::latest('id')->first();
因此,在Laravel默认情况下,你可以避免通过created_at字段进行排序。
其他回答
试试这个:
Model::latest()->get();
您将需要按照您现在正在排序的相同字段进行排序,但是降序。 举个例子,如果你有一个名为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 3和4插入的实际行,当你在一个新模型上执行保存或创建操作时,如下所示:
$user->save();
-or-
$user = User::create(array('email' => 'example@gmail.com'));
然后将返回插入的模型实例,并可用于进一步的操作,例如重定向到刚刚创建的用户的配置文件页面。
在小容量系统上查找最后插入的记录几乎可以一直工作,但如果您必须同时插入,您可能最终会查询到错误的记录。在需要更新多个表的事务系统中,这确实会成为一个问题。
你从来没有提到你是否使用Eloquent, Laravel的默认ORM。如果你是,让我们假设你想要获得一个User表的最新条目,通过created_at,你可能会这样做:
User::orderBy('created_at', 'desc')->first();
首先,它根据created_at字段逐级排序用户,然后获取结果的第一条记录。
这将返回User对象的一个实例,而不是一个集合。当然,为了使用这个替代方案,您必须有一个User模型,扩展Eloquent类。这听起来可能有点令人困惑,但它真的很容易开始,ORM真的很有帮助。
要了解更多信息,请查看官方文档,它非常丰富和详细。
推荐文章
- Laravel 5 -如何访问在视图存储上传的图像?
- Laravel用()消息重定向返回
- “质量分配”在Laravel中是什么意思?
- 登录后,Laravel重定向回原始目的地
- Laravel中使用雄辩的ORM进行批量插入
- Laravel PHP命令未找到
- 如何使用Laravel和Eloquent查询两个日期之间?
- 从Laravel 5中的另一个控制器访问控制器方法
- Laravel未知列'updated_at'
- 如何评论laravel .env文件?
- Laravel -创建模型,控制器和迁移在单一的工匠命令
- 如何使用Laravel迁移将时间戳列的默认值设置为当前时间戳?
- 选择“表”中的“最后一行”
- Laravel:获取基本URL
- 迁移:不能添加外键约束