2017-05-19 6 views
1

에 대한 최신 항목을 얻으려면 여기 내 테이블 enter image description herelaravel에서 원시 표현을 사용하여 사용자

내가 일이 원하는 것은 학생들을 위해 영어의 최신 성적을 얻을이없는 학생들을 무시하는 것입니다. 그것은 다음과 같이 표시해야합니다 :

{"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> 

도와주세요. 블레이드보기에 표시되는 다른 세부 정보를 확인할 수 있습니다.

+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; 

는 희망이 도움이!