JohnCMS
9.4
9.4
  • Введение
  • Начало работы
    • Установка и системные требования
    • Настройка
    • Структура файлов/папок
  • Общие сведения
    • Проблемы и их решение
    • Конфигурационные файлы (configs)
    • Шаблоны электронных сообщений (email)
    • Отправка электронной почты (email)
    • Работа с уведомлениями
    • Работа с запросом (Request)
    • Валидация
      • NotEmpty - Не пустое значение
      • StringLength - длина строки
      • LessThan - Менее чем
      • EmailAddress - Проверка email адреса
      • ModelExists - Проверка существования записи в БД
      • ModelNotExists - Проверка отсутствия записи в БД
      • Csrf - Проверка токена
      • Flood - проверка на флуд
      • Ban - Проверка банов
      • Captcha - Проверка защитного кода
  • Шаблоны
    • Структура стандартного шаблона
    • Изменение стилей шаблона
    • Создание собственного шаблона
  • Модули
    • Структура модуля
    • Создание модуля
    • Маршрутизация (роутинг)
  • Мультиязычность
    • Перевод JohnCMS на другие языки
    • Исправление ошибок в переводе
  • База данных
    • Настройки подключения к базе данных
    • Выполнение запросов к базе данных
    • Вставка записей (insert)
    • Обновление записей (update)
    • Удаление записей (delete)
  • Eloquent ORM
    • Общие сведения и начало работы
  • Пользователи
    • Поля (свойства) пользователей
    • Работа с пользователями в примерах
    • Работа с текущим авторизованным пользователем
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. Пользователи

Работа с пользователями в примерах

PreviousПоля (свойства) пользователейNextРабота с текущим авторизованным пользователем

Last updated 4 years ago

Was this helpful?

В предыдущей статье мы рассмотрели список Теперь давайте рассмотрим несколько примеров получения данных. Во всех примерах $user позволяет получить доступ ко всем полям, которые описаны в .

Модель пользователя уже имеет некоторые предустановленные условия для выборки (заготовки запросов). Например для получения подтвержденных пользователей, вы можете просто вызвать метод approved(), а для получения пользователей, которые сейчас находятся на сайте можно вызвать метод online().

Как это работает? В моделях можно создавать свои заготовки частей запросов. Например сейчас есть заготовка, которая вызывается методом approved(). Эта заготовка по своей сути равнозначна обычному вызову where('preg', '=', 1) Это достаточно простой вариант, но есть вариант немного сложнее. Например чтобы получить пользователей онлайн нам нужно ограничить выборку по времени. Чтобы каждый раз не писать where('lastdate', '>', (time() - 300)) мы можем вызвать заготовку online(). Теперь предположим, что у нас есть 10 страниц, на которых выводятся различные пользователи онлайн. Если бы мы не использовали заготовки запросов, нам бы пришлось везде писать условие для выборки where('lastdate', '>', (time() - 300)) и если бы мы захотели изменить время, в течение которого мы считаем пользователя онлайн, то нам бы пришлось менять его во всех 10 страницах. С заготовкой же нам достаточно изменить время в одном месте и это изменение применится для всех страниц.

А теперь перейдем к примерам:

Получим последних 10 зарегистрированных и подтвержденных пользователей и выведем их идентификаторы и логины:

$users = (new \Johncms\Users\User())->approved()->orderBy('id', 'desc')->limit(10)->get();
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . '<br>';
}

Получим 10 последних пользователей онлайн:

$users = (new \Johncms\Users\User())->online()->orderBy('lastdate', 'desc')->limit(10)->get();
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . '<br>';
}

Получим всех модераторов, администраторов, супервизоров и дополнительно выведем должность:

$users = (new \Johncms\Users\User())->online()->where('rights', '>', 0)->orderBy('lastdate', 'desc')->get();
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . ' -  ' . $user->rights_name . '<br>';
}

Получим 10 пользователей мужского пола:

$users = (new \Johncms\Users\User())->where('sex', '=', 'm')->orderBy('id')->limit(10)->get();
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . '<br>';
}

Получим 10 пользователей женского пола:

$users = (new \Johncms\Users\User())->where('sex', '=', 'zh')->orderBy('id')->limit(10)->get();
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . '<br>';
}

Получим 10 пользователей, у которых больше 100 постов на форуме:

$users = (new \Johncms\Users\User())->where('postforum', '>', 100)->orderBy('id')->limit(10)->get();
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . '<br>';
}

Усложним задачу и получим всех пользователей у которых больше 100 постов и разобьём выборку страницы (15 пользователей на страницу):

$users = (new \Johncms\Users\User())->where('postforum', '>', 100)->orderBy('id')->paginate(15);
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . '<br>';
}
echo $users->render();

Как видите, всё достаточно просто. Мы заменили get() на paginate() убрали limit(10) и в paginate передали количество пользователей, которое мы хотим видеть на одной странице. А дальше с помощью строки echo $users->render(); отрисовали список страниц.

Ну и давайте рассмотрим ещё 1 пример. Получим список пользователей, у которых поле статус не пустое и так же разобьём на страницы и выведем текст статуса.

$users = (new \Johncms\Users\User())->where('status', '!=', '')->orderBy('id')->paginate(15);
foreach ($users as $user) {
    echo $user->id . ' - ' . $user->name . ' - ' . $user->status . '<br>';
}
echo $users->render();

На этом всё, если у вас остались вопросы, задайте их на форуме.

полей пользователя.
предыдущей статье