如何在Laravel 5.2中使用条件查询 [英] How to use conditional for this query in Laravel 5.2
本文介绍了如何在Laravel 5.2中使用条件查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是场景
表:用户
id | name | grade | subject
---- | ------|--------|------
1 | Mark | a | science
2 | Earl | a | english
3 | John | c | english
4 | Mike | d | science
5 | Matt | e | english
我想做的是填充非重复或非重复成绩的成绩,但仅适用于英语科目
What I want to do is populate the grades that are non-repeating or non-duplicate grades but for english subject only
所以它应该只显示
c
e
我已经走了
I've got this far
控制器:
$grades = user::select('grade', DB::raw('COUNT(grade) as gradecount'))
->where('subject', 'english')
->groupBy('grade')
->having('gradecount', '=',1)
->get();
刀片:
@foreach ($grades as $grade)
{{ $grade }}
@endforeach
但是,此查询给出了
a
c
e
推荐答案
您将要执行以下操作:
SELECT grade
FROM Users
WHERE id IN (
SELECT id
FROM Users
GROUP BY grade
HAVING COUNT( grade ) = 1
) AND subject = 'english'`
查询构建器具有-> whereIn,您应该可以使用.太懒了,无法测试,但类似的方法可能有效.
Query builder has a ->whereIn that you should be able to use. Too lazy to test, but something like this may work.
$ids = user::select('id')
->groupBy('grade')
->having('gradecount', '=',1)
->get();
$grades = user::select('grade')
->whereIn('id', $ids)
->where('subject', 'english')
->get();
这篇关于如何在Laravel 5.2中使用条件查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文