Работа с запросами в Yii 2.x. Запрос выборки при работе DAO и построителем запросов (часть 2)

Предыдущая статья описывала основные функции доступа к базе данных при работе с моделью, в этой статье опишем основные функции работы с объектом доступа к данным (DAO) и построителем запросов.

Объект доступа к данным (DAO)

queryAll()

queryAll() осуществляет на выборку всех записей. Выберем все страны из таблицы Country

     // подключение к базе данных
     $connection = \Yii::$app->db;
    // Составляем SQL запрос 
    $model = $connection->createCommand('Select * From country');
    //Осуществляем запрос к базе данных, переменная $model содержит ассоциативный массив с данными
    $model = $model->queryAll();
    // вывод данных
         if($model){
    	   foreach ($model as $m)
    	       echo $m['name'].' ';
        }

Результатом выборки: Россия Румыния США Германия 

queryOne()

queryOne() осуществляет на выборку одной записей. Выберем страну из таблицы Country у которой id=1

     // подключение к базе данных
     $connection = \Yii::$app->db;
    // Составляем SQL запрос 
    $model = $connection->createCommand('Select * From country Where id=1');
    //Осуществляем запрос к базе данных, переменная $model содержит ассоциативный массив с данными
    $model = $model->queryOne();
    // вывод данных
         if($model)
    	       echo $model['name'];

Результатом выборки: Россия

queryColumn()

queryColumn() осуществляет на выборку первого столбца. Выведем первый столбец из таблицы Country

     // подключение к базе данных
     $connection = \Yii::$app->db;
    // Составляем SQL запрос 
    $model = $connection->createCommand('Select * From country');
    //Осуществляем запрос к базе данных, переменная $model содержит массив с данными
    $model = $model->queryColumn();
    // вывод данных
         if($model)
foreach ($model as $m) echo $m;

Результатом выборки: 1 2 3 4

queryScalar()

queryScalar() Возвращает скалярное значение. Подсчитаем количество строк в таблицы Country

     // подключение к базе данных
     $connection = \Yii::$app->db;
    // Составляем SQL запрос 
    $model = $connection->createCommand('Select Count(*) From country');
    //Осуществляем запрос к базе данных, переменная $model число строк
    $model = $model->queryColumn();
    // вывод данных
     echo $model;

Результатом выборки: 4

bindValue()

bindValue() привязывает параметр в условии. Выведем название страны у которой id=1

     // подключение к базе данных
     $connection = \Yii::$app->db;
    // Составляем SQL запрос 
    $model = $connection->createCommand('Select * From country Where id = :id')->bindValue(':id',1);
    //Осуществляем запрос к базе данных
    $model = $model->queryOne();
    // вывод данных
     echo $model['name'];

Результатом выборки: Россия

Построитель запросов

Перед тем как объявить клас Query подключим его.

use yii\db\Query;

Выведем все страны из таблицы.

 // подключаем построитель запросов
$model = new Query;
$model->select('name')->from('country')
$command = $model->createCommand();
$model = $command->queryAll();
    // вывод данных
         if($model){
    	   foreach ($model as $m)
    	       echo $m['name'].' ';
        }	

Результатом выборки: Россия Румыния США Германия

Перечислим функции и операторы, которые использует построитель отчетов. Функции аналогичны функциям работы с моделью.

  • Select() — выборка столбцов из таблицы
  • From() — из какой таблицы будет осуществляться выборка
  • Where(), andWhere(), orWhere() — условие выборки
  • AddParams() — привязка параметра
  • FilterWhere() — условие для фильтра
  • OrderBy() — сортировка
  • GroupBy() — группировка
  • Having() — условие работает с арегатными функциями
  • Join(), LeftJoin(), RightJoin(), InnerJoin() — связь таблиц
  • Union() — объединение таблиц
  • one(), all(), column(), scalar(), count(), average(), max(), min() — методы выборки
  • indexBy() — индексация запроса
  • and, or,between, not between, in, not in, like, or like, not like, or not like, exists, not exists, <,> <=,>= — операторы

Более подробное описание функций и операторов можно найти здесь