руководство/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;
}
Итак, мы рассмотрели все возможные способы получения данных.