2016-06-30 4 views
0

큰 데이터 세트를 처리하는 쿼리를 작성하는 것은 끔찍합니다. 나는 Laravel에서 찔러보고 내가 생각해 낼 수있는 것을보고 싶었다. 이 쿼리를 작성하고 결과를 출력하는 더 좋은 방법이 있습니까? 내가 페이지를로드 할 때이 쿼리를보다 효율적으로 만들 수 있습니다.

코드

$visitors = DB::table('visitors') 
      ->where('id_client',1) 
      ->select('id', 'ip', DB::raw('count(*) as total'), 'date', 'city', 'region') 
      ->groupBy('ip') 
      ->orderBy('date', 'DESC') 
      ->simplePaginate(25); 

결과

@foreach($visitors as $visitor) 
       <tr> 
         <td> 
          {{$visitor->id}} 
         </td> 
         <td> 
          @if (date('F d, Y', strtotime($visitor->date)) === date('F d, Y')) 
           Today 
          @else 
           {{ date('F d, Y', strtotime($visitor->date)) }} 
          @endif 
         </td> 
         <td> 
          {{$visitor-total}} 
         </td>      
         <td> 
          {{$visitor->city}} 
         </td> 
         <td> 
          {{$visitor->region}} 
         </td> 
       </tr> 
      @endforeach 

      {!! $visitors->render() !!} 

또한, 나는 오류 Use of undefined constant total - assumed 'total'를 얻을.

도움을 주시면 감사하겠습니다. 감사!

+1

잘 작동하지 않기 때문에 "더 효율적"이라는 것은 객체의 접근 자 메소드에 대해'>'누락 된 –

+1

'{$ visitor-total}}'구문 오류입니다. 또한 가지고있는 쿼리에 어떤 문제가 있습니까? 천천히? 원하는 결과가 나오지 않습니까? – Ohgodwhy

+0

오타로 인해 오류가 발생했습니다. {{$ visitor-> total}} – Kaladin11

답변

0

검색어가 필요한만큼 좋은 것으로 보입니다.

쿼리가 너무 느리게 실행되는 경우 'id_client'열에 색인을 추가하여 더 빨리 검색 할 수 있습니다 (물론 아직없는 경우).

관련 문제