【问题标题】:Order by created_at not working with Eloquent models通过 created_at 订购不适用于 Eloquent 模型
【发布时间】: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 ('级联'); });
  • 您的代码没有问题!有点奇怪。把你的完整代码放在你的答案中

标签: laravel eloquent sql-order-by laravel-5.3 laravel-eloquent


【解决方案1】:

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

【讨论】:

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

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

问候,

安迪巴

【讨论】:

  • 我使用 Laravel 5.3,虽然我是 Laravel 新手,但在 Eloquent 模型中使用 orderBy 时,它是排序记录的默认方式。还是谢谢
猜你喜欢
  • 2012-05-23
  • 1970-01-01
  • 2017-07-05
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2015-01-27
  • 1970-01-01
相关资源
最近更新 更多