Получение общего числа строк в Laravel Eloquent
Development | Комментировать запись
Eloquent – это объектно-реляционный преобразователь (ORM), который включен в структуру Laravel по умолчанию. В этой серии статей вы узнаете, как делать запросы к базе данных и как работать с отношениями в Laravel Eloquent. Также вы сможете попрактиковаться на примерах: мы попробуем улучшить демо-приложение с помощью новых моделей и отношений.
Примечание: Все мануалы данной серии можно найти по тегу Laravel Eloquent.
При работе с результатами запроса к базе данных часто возникает необходимость получить только общее количество строк (вместо того, чтобы извлекать полный набор данных с помощью обычного запроса). Eloquent предлагает несколько различных агрегатных методов, которые вместо объекта возвращают скалярное число, среди них count(), max() и sum(). Все эти методы доступны в конструкторе запросов, встроенный в каждую модель Eloquent.
В этой части серии мы обновим основной вид приложения, чтобы отобразить общее количество ссылок в каждом списке.
Откройте файл resources/views/index.php в редакторе кода:
resources/views/index.php
Найдите абзац, стилизованный под класс subtitle, который содержит цикл foreach, отображающий меню приложения:
... <p class="subtitle"> @foreach ($lists as $list)<a href="{{ route('link-list', $list->slug) }}" title="{{ $list->title }}" class="tag is-info is-light">{{ $list->title }}</a> @endforeach </p> ...
Чтобы получить общее количество ссылок в каждом списке, вы можете получить доступ к конструктору запросов из метода $list->links(), определенного в классе LinkList, и вызвать метод count(), доступный через этот конструктор запросов:
{{ $list->links()->count() }}
Обновите код внутри цикла foreach и включите в него вызов метода count(), который отобразит количество ссылок в списке. Обязательно поместите его внутри тега <a> сразу после заголовка списка. Для большей читабельности в отображаемом HTML-выводе вы можете заключить эти данные в круглые скобки.
Вот как должен выглядеть код после того, как вы внесете все изменения:
<p class="subtitle"> @foreach ($lists as $list)<a href="{{ route('link-list', $list->slug) }}" title="{{ $list->title }}" class="tag is-info is-light">{{ $list->title }} ({{ $list->links()->count() }})</a> @endforeach </p>
Когда закончите, сохраните файл. Затем перезагрузите главную страницу приложения в своем браузере. Напоминаем, она доступна по ссылке:
http://localhost:8000
Теперь в верхнем меню на вашей странице будет указано общее количество ссылок, включенных в каждый список.
В следующем мануале этой серии вы узнаете, как ограничить количество результатов в запросе и как разбить результаты на страницы в Laravel Eloquent.
Tags: Eloquent, Laravel, Laravel Eloquent, ORM