laravel orderBy id可以正常使用此函数:
News::orderBy('id', 'desc')->paginate(20);
但是我很难通过自定义字段实现这一目标。
我的自定义日期字段(排序)是一个jQuery UI datepicker字段,用于填充所选日期,并采用以下格式:
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'));
}
正如我之前提到的那样,但我们的想法是通过自定义日期字段进行排序。
答案 0 :(得分:1)
我会在这里发布,所以它可能对其他人有用。
我正在使用Laravel Translatable插件。它有两个模型和两个数据库的文章。例如“新闻”和“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试图从“新闻”订购文章,而不是“newsTranslation”,在我的情况下,该字段在“新闻”表中不可用。
我通过在“新闻”中创建日期自定义字段来解决这个问题。现在一切正常。