2017-05-19 3 views
1

の最新のエントリを取得するためにlaravelで生の発現を使用すると、私のテーブルには、私が起こるにしたいどのような enter image description hereここでは、ユーザ

ある学生のための英語での最新の成績を取得し、1を持っていない学生を無視することです。それはこのように表示される必要があります。

{"date":"2017\/7\/13","student_id":2,"grade":"C"}<br> 
{"date":"2017\/7\/1","student_id":3,"grade":"D"}<br> 
{"date":"2017\/4\/1","student_id":5,"grade":"E"} 

しかし、私が持っているコードでは、これは私がここで

{"id":2,"date":"2017\/5\/1","student_id":1,"grade":"A","subject":"Science","created_at":null,"updated_at":null}<br> 
{"id":3,"date":"2017\/7\/13","student_id":2,"grade":"C","subject":"English","created_at":null,"updated_at":null}<br> 
{"id":4,"date":"2017\/2\/1","student_id":3,"grade":"A","subject":"English","created_at":null,"updated_at":null}<br> 
{"id":5,"date":"2017\/6\/1","student_id":4,"grade":"C","subject":"Science","created_at":null,"updated_at":null}<br> 
{"id":6,"date":"2017\/4\/1","student_id":5,"grade":"E","subject":"English","created_at":null,"updated_at":null}<br> 
{"id":7,"date":"2017\/2\/1","student_id":1,"grade":"D","subject":"Science","created_at":null,"updated_at":null}<br> 
{"id":8,"date":"2017\/3\/1","student_id":2,"grade":"A","subject":"English","created_at":null,"updated_at":null}<br> 
{"id":9,"date":"2017\/7\/1","student_id":3,"grade":"D","subject":"English","created_at":null,"updated_at":null}<br> 
{"id":10,"date":"2017\/8\/1","student_id":4,"grade":"C","subject":"Science","created_at":null,"updated_at":null} 

を表示するものであることは私のコントローラ

$englishgrades = StudentHistory::raw('select p1.student_id 
    from student_histories p1 
    inner join 
    (
     select student_id, max(date) as mdate 
     from student_histories 
     group by student_id 
    ) 
    p2 on p1.student_id = p2.student_id and p1.date = p2.mdate 
    where p1.subject = "English" 
    ') 
    ->get(); 

home.blade.phpです

Total of {{ $englishgrades->count() }} 
       <br><br> 

       @foreach ($englishgrades as $englishgrade) 
        {{ $englishgrade }}<br> 
       @endforeach<br><br> 

私も助けてくださいremoブレードビューに表示されているその他の詳細が表示されます。

+0

mysqlクエリが必要ですか? – Monty

+0

はい、私は上記のように、私は生の表現として挿入することができます –

+0

私はあなたのコントローラファイルに書き込むことができますし、mysqlのクエリを提供することができますまた、私はテーブルとデータを作成することができますか、私はその上で動作します – Monty

答えて

0

一度これを試してください: -

$englishgrades = DB::select(DB::raw('SELECT a.* 
        FROM student_historiess a 
        INNER JOIN 
        (
         SELECT *, MAX(id) max_ID 
         FROM student_histories 
         GROUP BY grade 
        ) b ON a.grade = b.grade AND 
         a.id = b.max_ID 
         having a.subject = "english"')); 
echo "<pre>"; print_r($englishgrades); die; 

はそれが役に立てば幸い!

関連する問題