Laravel Eloquent 如何在 Postgresql 中使用 DATE_FORMAT
Posted
技术标签:
【中文标题】Laravel Eloquent 如何在 Postgresql 中使用 DATE_FORMAT【英文标题】:Laravel Eleqent How to use DATE_FORMAT in Postgresql 【发布时间】:2019-10-01 18:43:22 【问题描述】:我正在编写一个查询来获取按 created_at 分组的记录,下面是我的查询。
$q = Post::where('user_id', '=', auth()->user()->id)
->orderBy('created_at', 'desc')
->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m-%d')"))
->take(10)
->get(array(
DB::raw('Date(created_at) as date'),
DB::raw('COUNT(id) as "views"')
))->reverse()
这在 mysql 上运行没有任何错误,但是当我使用 postgresql 在 heroku 上推送代码时,我得到错误:
ERROR: function date_format(timestamp without time zone, unknown) does not exist
【问题讨论】:
是否应该在 MySQL 和 PostgreSQL 上运行相同的代码? 【参考方案1】:我知道这已经很晚了,但是如果有人仍然在这里寻找答案是如何在 Postgresql 中获取日期,您可以使用 field_name::date
,例如 created_at::date
上面的查询可以写成
DB::select("select created_at::date, COUNT(id) as views from post where user_id = ".auth()->user()->id." group by created_at::date order by created_at desc Limit 10");
【讨论】:
以上是关于Laravel Eloquent 如何在 Postgresql 中使用 DATE_FORMAT的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel 的 Eloquent 实现单表继承?
如何在 Laravel 中使用多表查询而不使用 Eloquent 关系
Eloquent:find() 和 where() 用法 laravel
分类 slug + post slug Laravel Eloquent