laravel-5 - 如何将 SELECT 语句转换为 Eloquent?
问题描述
这适用于现有网站,尝试转换为 Laravel 5.8 代码:
SELECT
DATE_FORMAT(created_at, '%M %Y') AS 'article',
DATE_FORMAT(created_at, '%m')AS 'm',
DATE_FORMAT(created_at,'%Y') AS 'y',
COUNT(id) AS 'total'
FROM posts
GROUP BY DATE_FORMAT(created_at, '%Y%M')
ORDER BY m DESC
我试过了:
$archives = DB::select("SELECT DATE_FORMAT(created_at, '%M %Y') AS 'article',DATE_FORMAT(created_at, '%m')AS 'm', DATE_FORMAT(created_at,'%Y') AS 'y', COUNT(id) AS 'total' FROM posts GROUP BY DATE_FORMAT(created_at, '%Y%M') ORDER BY m DESC");`
我有:
错误:SQLSTATE[42000]:语法错误或访问冲突:1055 'amohdb.posts.created_at' 不在 GROUP BY 中(SQL: SELECT DATE_FORMAT(created_at, '%M %Y') AS 'article',DATE_FORMAT(created_at , '%m')AS 'm', DATE_FORMAT(created_at,'%Y') AS 'y', COUNT(id) AS 'total' FROM posts GROUP BY DATE_FORMAT(created_at, '%Y%M') ORDER BY m DESC)
解决方案
答案比我想象的要简单得多
$archives = Post::select(DB::raw("DATE_FORMAT(created_at, '%M %Y') as article"),
DB::raw("COUNT(id) as total"))
->groupBy('article')
->get();
推荐阅读
- templates - 带有 TYPO3 v10 的模板
- docker - 如何在容器中运行我的本地应用程序
- spring-boot - 无法获得表锁 - 另一个 Flyway 实例可能正在运行
- ios - UI/UX 与 UIViewPropertyAnimator 交互的自定义 UIView 动画
- android - 为什么 Robolectric 4.4 会破坏我的 MockK 测试
- python - 'BatchNormalization' 未定义
- python - Python URLencode问题
- c# - 控制台不处理转义序列
- java - Android studio 条码读取
- amazon-web-services - 为 AWS Systems Manager 设置 SSL 以与 EC2 一起使用