通过 created_at 订购不适用于 Eloquent 模型

Posted

技术标签:

【中文标题】通过 created_at 订购不适用于 Eloquent 模型【英文标题】:Order by created_at not working with Eloquent models 【发布时间】:2017-12-07 13:10:20 【问题描述】:

在使用 Eloquent 模型时尝试按 created_at 列排序记录时遇到了一个小问题。排序按日期而非时间工作。例如,如果我有 3 条记录的 created_at 值:

2017-07-04 07:16:33

2017-07-04 05:35:01

2017-07-04 05:27:48

我在使用 orderby('created_at', 'desc') 或 'asc' 时有相同的输出。但是,如果我有,则可以订购

2017-07-04 05:27:48

2017-07-03 06:35:50

当我使用原始查询时,排序也有效。仅当我使用 Eloquent 模型时才会出现此问题。

有人知道为什么会这样吗?提前致谢

【问题讨论】:

你的架构代码是什么? @AhmadMobaraki 这是我的控制器中的内容:$connections = Connection::orderBy('created_at', 'desc')->paginate(10); 我的意思是你的迁移文件!任何方式试试这个:$connections = Connection::orderBy('created_at', 'desc')->paginate(10); @AhmadMobaraki 这是我的迁移文件中的架构: Schema::create('connections', function (Blueprint $table) $table->increments('id'); $table-> integer('user_id')->unsigned(); $table->integer('offer_id')->unsigned(); $table->timestamps(); $table->foreign('user_id')->references( 'id')->on('users')->onDelete('cascade'); $table->foreign('offer_id')->references('id')->on('offers')->onDelete ('级联'); ); 您的代码没有问题!有点奇怪。把你的完整代码放在你的答案中 【参考方案1】:

哦,这是我的错!我解决了这个问题,获取数据时不是服务器端的问题,而是客户端的问题,因为我使用了'dataTables'

【讨论】:

你能解释一下实际问题是什么吗?我面临同样的问题【参考方案2】:

不确定您使用的是哪个版本的 Laravel。但是最好将php中的datetime值转换为Carbon类型进行排序和过滤。请先尝试转换值,然后再订购。祝你的代码好运。

问候,

安迪巴

【讨论】:

我使用 Laravel 5.3,虽然我是 Laravel 新手,但在 Eloquent 模型中使用 orderBy 时,它是排序记录的默认方式。还是谢谢

以上是关于通过 created_at 订购不适用于 Eloquent 模型的主要内容,如果未能解决你的问题,请参考以下文章

Rails 应用程序 HTTP 到 HTTPS 重定向不适用于公开的 API

GNU Make 中的仅订购目标 - 用于 Microsoft NMAKE?

通过外观为 UIBarButtonItem 设置背景图像不适用于其他 UIControlStates

为啥这种方法不适用于通过反应可视化快速排序?

通过注释的 Spring 授权不适用于自定义身份验证

分页 Laravel 集合