如何使用查询构建器输出数据,同时消除重复项

时间:2017-03-05 20:21:49

标签: laravel

我有一个结果表,其中有adm_nosubject_idexam_idscore字段。我在laravel 5.4中使用updateOrCreate方法插入数据。

当我获取数据时,我仍然会得到重复数据。例如当用户为给定主题插入例如2名学生的标记并为同一学生和主题重复时,我应该获得所有结果的最新一行。

以下是我的查询示例:

public function searchStudent()
{
    $exam = Exam::all();
    $term = Term::all();

    $a = Input::get('adm_no');
    $e = Input::get('exam_id');
    $t = Input::get('term_id');
    $y = Input::get('year');

    $results = DB::table('results')
        ->select(DB::raw('DISTINCT(subject_id)'))
        ->where('adm_no', 'LIKE', '%' . $a . '%')
        ->where('exam_id','LIKE', '%' . $e . '%')
        ->where('term_id', 'LIKE', '%' . $t . '%')
        ->where('year', 'LIKE', '%' . $y . '%')
        ->orderBy('created_at', 'desc')
        ->get();

    dd($results); 
}

2 个答案:

答案 0 :(得分:0)

尝试以下查询:

{(2, 3, 7, 8), (1, 3), (4, 6), (4, 8), (1, 2, 3), (1, 6), (7, 8), (1, 6, 8), (3, 5)}

答案 1 :(得分:0)

我对这个问题进行了更多的研究,这就是我为我工作的原因。

<强>问题

      public function searchStudent(){
        $a= Input::get( 'adm_no' );
        $e= Input::get( 'exam_id' );
        $t= Input::get( 'term_id' );
        $y= Input::get( 'year' );
         $results=DB::table('results')->distinct('subject_id')
        ->where( 'adm_no', $a)
        ->where( 'exam_id', $e)
        ->where( 'term_id',$t)
        ->where( 'year',$y)
        ->groupBy('subject_id')
        ->latest('subject_id')
        ->get();
        dd($results);
          }