sql - 如何在 Join 中获取 Laravel Eloquent Count 和 Case
问题描述
再会!
我在我的 laravel 8 项目中尝试查询时遇到问题。在我的数据库中,我有 2 个表:用户和角色。在用户表中,它有一个角色列,该列中插入的数据是角色表ID。
或者任何人都可以帮我将此sql命令转换为laravel。
----SQL----
SELECT roles.id, roles.role_name,
COUNT(users.roles) AS users,
roles.permission,
case when roles.`status` = 1 then 'Active'
ELSE 'Inactive'
END AS `status`
FROM roles
INNER JOIN users ON roles.id = users.roles
GROUP BY roles.id
--我的 laravel 代码不工作--
$data = Roles::select(
"roles.id",
"roles.role_name",
DB::raw("count(users.roles) as users, roles.permission, (CASE WHEN roles.status = 1 THEN 'Active' ELSE 'Inactive' END) as status")
)
->join("users", "users.roles","=","roles.id")
->groupBy("roles.id")
->get();
来人帮帮我。谢谢
解决方案
DB::table("roles")
->innerJoin("users", function($join){
$join->on("roles.id", "=", "users.roles");
})
->select("roles.id", "roles.role_name", "count (users.roles) as users", "roles.permission")
->addSelect(DB::raw("case when roles.`status` = 1 then 'active' else 'inactive' end as `status`"))
->groupBy("roles")
->get();
推荐阅读
- python - 3列的python模式 - 关于方法的建议?
- javascript - Vue.js 中作为父对象属性的绑定方法
- r - 在 plm R 包中使用 pgmm 函数估计经济增长方程
- android - 没有后台位置权限的 Android 地理围栏 - 可能吗?
- c - 我在 c 中创建了一个 Makefile,它应该创建多个可执行文件,但它不起作用
- xargs - /usr/bin/zcat:参数列表太长
- r - 使用函数和 lapply 制作正确标记的直方图
- php - PHP问题,在标题标签中自动“转到另一个网址”
- python - 为什么 django 不发送我的电子邮件而是给我一个错误?
- mongodb - MongoDB 每条消息 TTL