2016-06-30 38 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}}应该是{{$ visitor-> total}} – Kaladin11

回答

0

只要它满足您的需求,查询就会很好。

如果你的查询运行速度太慢,也许你可以添加一个索引到你的'id_client'列来加快搜索速度(如果你当然没有)。