php - 我想使用 Laravel 连接根据条件返回特定数量的记录
问题描述
我正在使用 Laravel 8.0 开发谷歌表单克隆
我的表结构如下:
1 调查
- ID
- 调查名称
- 调查说明
- 调查类型
- 开始日期
- 结束日期
2. 项目
- ID
- 项目名称
- 项目描述
- company_id
3. 公司
- ID
- 公司名称
- 公司地址
我编写了代码来返回项目,如下所示:
$projects = \DB::table('projects')
->join('companies', 'projects.company_id', '=', 'companies.id')
->select('projects.*', 'companies.company_name as company_name',
\DB::raw('(SELECT COUNT(*) FROM surveys WHERE DATE(surveys.end_date) < "'.date('Y-m-d').'" AND surveys.project_id = projects.id) as completed_surveys'),
\DB::raw('(SELECT COUNT(*) FROM surveys WHERE surveys.project_id = projects.id) as total_surveys')
)
->paginate(6);
现在我只想返回那些total_surveys = completed_surveys的项目。
请指导我。
提前谢谢。
解决方案
完毕....
下面是我的代码工作......
$projects = \DB::table('projects')->where(
\DB::raw('(SELECT COUNT(*) FROM surveys WHERE DATE(surveys.end_date) < "'.date('Y-m-d').'" AND surveys.project_id = projects.id)'),
\DB::raw('(SELECT COUNT(*) FROM surveys WHERE surveys.project_id = projects.id)')
)
->join('companies', 'projects.company_id', '=', 'companies.id')
->select('projects.*', 'companies.company_name as company_name',
\DB::raw('(SELECT COUNT(*) FROM surveys WHERE DATE(surveys.end_date) < "'.date('Y-m-d').'" AND surveys.project_id = projects.id) as completed'),
\DB::raw('(SELECT COUNT(*) FROM surveys WHERE surveys.project_id = projects.id) as total_surveys')
)
->paginate(6);
推荐阅读
- spring-boot - 如何从 jhipster 的 JHI_USER 表中删除字段?
- flutter - 如何在颤动中获取当前字体系列值?
- flutter - 使用 snapshot.data 将 ImageNetwork 添加到 streambuilder 时遇到问题
- c - 默认写入行为 - O_TRUNC 还是 O_APPEND?
- laravel - 雄辩的关系 - 通过数据透视表获取唯一的条目列表。(BelongsToMany)
- docker - traefik v2 无法通过域从内部卷曲到我的 docker 的其他容器
- google-sheets - 为什么将 Google Sheets 中的多行文本复制到 Instagram 标题框会在文本的开头和结尾添加引号?
- string - 如何在鱼壳中的字符串中有换行符?
- iphone - iPhone模拟器中是否有在暗模式和亮模式之间切换的键盘快捷键?
- laravel - 通知假断言不适用于密码重置测试?