В Yii2 есть несколько способов построения запросов к базе данных. Давайте рассмотрим наиболее популярные из них.
1. С использованием Query Builder:
Query Builder - это объектно-ориентированное API, которое позволяет вам строить запросы к базе данных в виде цепочки методов. Объект Query Builder создается с помощью статического метода Yii::$app->db->createCommand()
. Ниже приведен пример создания запроса SELECT с условиями:
$query = Yii::$app->db->createCommand() ->select('id, name') ->from('user') ->where(['status' => 1]) ->andWhere(['>', 'age', 18]) ->orderBy('name') ->limit(10) ->offset(0) ->queryAll();
2. С использованием Active Record:
Active Record - это инструмент, который позволяет вам работать с базой данных через объекты. Каждая таблица в базе данных представлена отдельным классом модели. Active Record автоматически создает или обновляет записи в базе данных при изменении соответствующих объектов моделей. Ниже приведен пример создания запроса SELECT с использованием Active Record:
$users = User::find() ->select(['id', 'name']) ->where(['status' => 1]) ->andWhere(['>', 'age', 18]) ->orderBy('name') ->limit(10) ->offset(0) ->all();
3. С использованием SQL-запросов:
Если вам требуется выполнить сложный SQL-запрос, который не может быть построен с помощью Query Builder или Active Record, вы можете воспользоваться методом createCommand()
для создания объекта yiidbCommand
. Этот класс предоставляет методы для выполнения запроса и получения результатов. Ниже приведен пример создания запроса на SQL:
$command = Yii::$app->db->createCommand('SELECT id, name, age FROM user WHERE status = :status AND age > :age'); $command->bindValue(':status', 1); $command->bindValue(':age', 18); $users = $command->queryAll();
Однако, при использовании SQL-запросов, будьте осторожны, чтобы избежать возможности SQL-инъекций. Рекомендуется использовать параметризованные запросы, как показано в примере выше.
Независимо от выбранного метода построения запросов, Yii2 обеспечивает удобный и безопасный способ работы с базой данных. Вы можете выбрать наиболее подходящий метод в зависимости от ваших потребностей и стиля программирования.