如何在Laravel 5.2中使用条件查询 [英] How to use conditional for this query in Laravel 5.2

查看:70
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆