2016-06-30 26 views
0

Ich bin schrecklich beim Schreiben von Abfragen, die mit großen Datensätzen zu tun haben. Ich wollte Laravel erstechen und sehen, was ich daraus machen kann. Gibt es eine bessere Möglichkeit, diese Abfrage zu schreiben und die Ergebnisse auszugeben?Machen Sie diese Abfrage effizienter

-Code

$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); 

Ergebnisse

@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() !!} 

Auch erhalte ich die Fehler Use of undefined constant total - assumed 'total', wenn ich versuche, die Seite zu laden.

Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

+1

gut, da es nicht einmal funktioniert, "mehr" effizient würde nur funktionieren –

+1

'{$ besucher-total}}' Syntaxfehler, fehlt die '>' für Accessor-Methoden von Objekten. Was ist falsch an der Abfrage, die Sie haben? Ist es langsam? Führt es nicht zu den gewünschten Ergebnissen? – Ohgodwhy

+0

Sie erhalten diesen Fehler wegen eines Tippfehlers: {{$ visitor-total}} sollte {{$ visitor-> total}} sein – Kaladin11

Antwort

0

Die Abfrage sieht gut aus, solange sie das tut, was Sie brauchen.

Wenn Ihre Abfrage zu langsam abläuft, können Sie möglicherweise einen Index zu Ihrer Spalte 'id_client' hinzufügen, um die Suche zu beschleunigen (falls Sie sie noch nicht haben).

Verwandte Themen