【问题标题】:Laravel order by custom date fieldLaravel 按自定义日期字段排序
【发布时间】:2020-06-20 17:19:43
【问题描述】:

laravel orderBy id 可以很好地使用这个函数:

News::orderBy('id', 'desc')->paginate(20);

但我正在努力通过自定义字段来实现这一点。

我的自定义日期字段(排序)是一个 jQuery UI 日期选择器字段,用于填充所选日期,格式如下:

yy-mm-dd

所以,如果我从日期选择器中选择,假设今天它将显示为 2017-12-05,并以相同的格式保存在数据库中。

使用此自定义字段的原因是添加旧新闻文章,但顺序不同。

我尝试过这样做:

News::orderBy('sorting', 'desc')->paginate(20);

但显示此错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sorting' in 'order clause' (SQL: select * from `news` order by `sorting` desc limit 20 offset 0)

该列确实存在于我的数据库中。

如何使用 Laravel 中的自定义“排序”日期字段对我创建的文章进行排序?

编辑:

这是新闻列表的功能:

public function newsList() {
        $news = News::orderBy('id', 'desc')->paginate(20);
        return view('news-list', compact('news'));
    }

正如我在此之前提到的,但想法是按自定义日期字段排序。

【问题讨论】:

  • 请显示news的数据库架构
  • 嗨,aynber,我已经编辑了帖子。
  • 排序是什么格式?日期时间或varchar? Y-m-d 或 d-m-Y
  • 可以直接对数据库执行查询吗?
  • 这只是功能。在 mysql 控制台中尝试DESCRIBE news,然后发布结果。

标签: php mysql laravel laravel-5


【解决方案1】:

好的,伙计们,我找到了问题! :)

我会把它贴在这里,所以它可能对其他人有用。

我正在使用 Laravel 可翻译插件。它有两个模型和两个数据库的文章。例如“news”和“newsTranslation”。

所以,当我想使用 orderBy 时,我无法按“newsTranslation”中的字段记录排序。这只能从“新闻”表中实现。

显示了这个错误

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sorting' in 'order clause' (SQL: select * from `news` order by `sorting` desc limit 20 offset 0)

因为 orderBy 试图从“news”而不是“newsTranslation”中订购文章,而在我的情况下,该字段在“news”表中不可用。

我已通过在“新闻”中创建日期自定义字段来解决此问题。现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2018-04-25
    • 2016-06-10
    • 2017-07-30
    • 1970-01-01
    相关资源
    最近更新 更多