Помогите написать select запрос на Yii и получить num_rows

Рейтинг: 0Ответов: 1Опубликовано: 28.07.2023

Нужно выполнить запрос к бд, а затем проверить количество строк ответа. Вот как я пытаюсь

              $connection = Yii::app()->db;
              $sql = "select unique_id
                         from clients
                        where unique_id = '{$params['client_id']}'";
              $qry = $connection->createCommand($sql);
              $findUserInDb = $qry->execute();
              if ($findUserInDb->rowCount < 1) {
                //пользователь не нашелся
              }

ошибка в строке $findUserInDb->rowCount 'Trying to get property of non-object'

Ответы

▲ 1Принят
$connection = Yii::app()->db;
$sql = "select unique_id
        from clients
        where unique_id = '{$params['client_id']}'";
$qry = $connection->createCommand($sql);
$findUserInDb = $qry->queryAll();
if (empty($findUserInDb)) {
    //пользователь не нашелся
}

execute() возвращает количество строк, затронутых запросом (количество затронутых записей), а не объект с результатом запроса, не result set.

А вот queryAll() выдаст все строки результата, и их можно посчитать.

Впрочем, зачем считать и получать все строки, если можно чуть более оптимально проверить на наличие результата через query() или даже queryRow() / queryOne():

$findUserInDb = $qry->queryRow();
if ($findUserInDb === false) {
    //пользователь не нашелся
}