В Yii2 есть несколько способов построения запросов для получения данных из базы данных. Рассмотрим наиболее распространенные из них.
1. Query Builder:
Yii2 предоставляет удобный и гибкий способ построения запросов с использованием Query Builder. Он позволяет составлять запросы без непосредственной работы с SQL, делая код более удобочитаемым и безопасным.
Пример запроса с использованием Query Builder:
use yiidbQuery; $query = new Query; $rows = $query->select('id, name') ->from('user') ->where(['status' => 1]) ->orderBy('name') ->all();
В данном примере мы создаем объект Query, указываем поля для выборки (select), таблицу, условия (where), сортировку (orderBy) и выполняем запрос (all).
2. Active Record:
Active Record - это шаблон проектирования, который сочетает данные (модель) и поведение (запросы к базе данных) в одном классе. В Yii2 каждая таблица базы данных может быть представлена в виде класса наследующего класс ActiveRecord.
Пример запроса на получение данных с использованием Active Record:
$users = User::find() ->where(['status' => 1]) ->orderBy('name') ->all();
В данном примере мы используем статический метод find() класса User (класс представляющий таблицу "user" в базе данных) для получения запроса. Затем мы указываем условие (where), сортировку (orderBy) и выполняем запрос (all).
3. SQL-запросы:
С помощью методов класса Yii::$app->db->createCommand() можно выполнять произвольные SQL-запросы, но такой подход рекомендуется использовать только в исключительных случаях.
Пример использования SQL-запроса:
$connection = Yii::$app->db; $command = $connection->createCommand('SELECT * FROM user WHERE status=:status'); $command->bindValue(':status', 1); $users = $command->queryAll();
В данном примере мы создаем объект команды и выполняем SQL-запрос для получения данных из таблицы "user" с использованием параметра ":status" для безопасной передачи значения. Затем мы выполняем запрос с помощью метода queryAll().
Все эти методы предоставляют гибкость и удобство при работе с базой данных в Yii2. Выбор конкретного способа зависит от вашей специфической задачи и личных предпочтений.