В предыдущей статье мы рассмотрели список полей пользователя. Теперь давайте рассмотрим несколько примеров получения данных. Во всех примерах $user позволяет получить доступ ко всем полям, которые описаны в предыдущей статье.
Модель пользователя уже имеет некоторые предустановленные условия для выборки (заготовки запросов). Например для получения подтвержденных пользователей, вы можете просто вызвать метод approved(), а для получения пользователей, которые сейчас находятся на сайте можно вызвать метод online().
Как это работает? В моделях можно создавать свои заготовки частей запросов. Например сейчас есть заготовка, которая вызывается методом approved(). Эта заготовка по своей сути равнозначна обычному вызову where('preg', '=', 1) Это достаточно простой вариант, но есть вариант немного сложнее. Например чтобы получить пользователей онлайн нам нужно ограничить выборку по времени. Чтобы каждый раз не писать where('lastdate', '>', (time() - 300)) мы можем вызвать заготовку online(). Теперь предположим, что у нас есть 10 страниц, на которых выводятся различные пользователи онлайн. Если бы мы не использовали заготовки запросов, нам бы пришлось везде писать условие для выборки where('lastdate', '>', (time() - 300)) и если бы мы захотели изменить время, в течение которого мы считаем пользователя онлайн, то нам бы пришлось менять его во всех 10 страницах. С заготовкой же нам достаточно изменить время в одном месте и это изменение применится для всех страниц.
А теперь перейдем к примерам:
Получим последних 10 зарегистрированных и подтвержденных пользователей и выведем их идентификаторы и логины:
Получим 10 последних пользователей онлайн:
Получим всех модераторов, администраторов, супервизоров и дополнительно выведем должность:
Получим 10 пользователей мужского пола:
Получим 10 пользователей женского пола:
Получим 10 пользователей, у которых больше 100 постов на форуме:
Усложним задачу и получим всех пользователей у которых больше 100 постов и разобьём выборку страницы (15 пользователей на страницу):
Как видите, всё достаточно просто. Мы заменили get() на paginate() убрали limit(10) и в paginate передали количество пользователей, которое мы хотим видеть на одной странице. А дальше с помощью строки echo $users->render(); отрисовали список страниц.
Ну и давайте рассмотрим ещё 1 пример. Получим список пользователей, у которых поле статус не пустое и так же разобьём на страницы и выведем текст статуса.
На этом всё, если у вас остались вопросы, задайте их на форуме.