руководство/5. Получение данных.md


Получение данных

Итак, в прошлой статье мы научились формировать условия для выборки данных. Давайте теперь попробуем получить данные из таблицы users. Напомним, что она имеет вид:

id user_name user_mail
1 Ivan ivan@example.com
2 Olga olga@example.com
3 Oleg oleg@mail.ru
4 Nikolay nikolay@example.com

Попробуем теперь получить строку, где имя пользователя - Oleg. Для этого воспользуемся методом select->row:

$user = $db->select->row('users', where: new ConditionBuilder()->whereEquals('user_name', 'Oleg'), className: "\\App\\Models\\User");

echo $user->id; // Выведет 3
echo $user->email; // Выведет oleg@mail.ru

Давайте теперь получим пользователей, у которых почта на домене example.com. Для этого нам потребуется метод select->rows:

$users = $db->select->rows('users', where: new ConditionBuilder()->whereLike('user_mail', '%example.com'), className: "\\App\\Models\\User");

// Выведет:
// Ivan
// Olga
// Nikolay
foreach ($users as $user)
    echo $user->name;

Давайте теперь немного изменим предыдущую задачу. Пусть нам требуется только столбец user_name для всех пользователей. Для этого нам потребуется метод select->column:

$users = $db->select->column('users', 'user_name');

$users = implode(', ', $users);

// Выведет: Ivan, Olga, Oleg, Nikolay
echo $users;

Далее, представим, что вы пишете функцию получения id по user_name. С помощью метода select->value мы это сделаем ниже:

function getUserId (string $userName): int {
    // Задаём условие
    $condition = new ConditionBuilder()->whereEquals('user_name', $userName);
    
    // Получаем
    $id = $db->select->value('users', 'id', $condition);
    
    // Возвращаю 0, если ошибка и $id, если всё хорошо
    return $id == null ? 0 : $id; 
}

Итак, мы рассмотрели все возможные способы получения данных.

Предыдущий пункт | На главную | Следующий пункт