通过 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?