Я ужасен при написании запросов, касающихся больших наборов данных. Я хотел взять удар в 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'
при попытке загрузить страницу.
Любая помощь будет принята с благодарностью. Благодаря!
ну, так как он даже не работает, «более эффективный» будет просто работать –
'{$ visitor-total}}' синтаксическая ошибка, не удаляя '>' для методов доступа объектов. Кроме того, что случилось с запросом, который у вас есть? Это медленно? Не дает ли он желаемых результатов? – Ohgodwhy
Вы получаете эту ошибку из-за опечатки: {{$ visitor-total}} должно быть {{$ visitor-> total}} – Kaladin11