SQL-запрос
Выборка записей
Выборка записей происходит через методы queryAll()
и queryOne()
.
// выборка несколько записей Yii::$app->db->createCommand('SELECT id,title,content FROM post')->queryAll(); // выборка одной записи Yii::$app->db->createCommand('SELECT id,title,content FROM post WHERE id=:id', ['id' => 28])->queryOne();
Если надо подсчитать количество записей, то можно использовать метод queryScalar()
.
// выборка несколько записей Yii::$app->db->createCommand('SELECT COUNT(id) FROM post')->queryScalar(); // 14
Создание, обновление и удаление записей
Для создания, обновления и удаления записей используется метод execute()
.
// Добавление записи $params = ['title' => 'Имя поста', 'content' => 'Контент поста']; Yii::$app->db->createCommand('INSERT INTO post(title,content) VALUES(:title, :content)', $params)->execute(); // Обновление записи $params = ['id' => 14, 'title' => 'Имя поста', 'content' => 'Контент поста']; Yii::$app->db->createCommand('UPDATE post SET title=:title, content=:content WHERE id=:id', $params)->execute(); // Удаление записи $params = ['id' => 14]; Yii::$app->db->createCommand('DELETE FROM post WHERE id=:id', $params)->execute();
Также можно использовать методы insert()
, update()
и delete()
.
// Добавление записи $params = ['title' => 'Имя поста', 'content' => 'Контент поста']; Yii::$app->db->createCommand()->insert('post', $params)->execute(); // Обновление записи $params = ['title' => 'Имя поста', 'content' => 'Контент поста']; Yii::$app->db->createCommand()->update('post', $params, 'id=14')->execute(); // Удаление записи Yii::$app->db->createCommand()->delete('post', 'id=14')->execute();
В обоих случаях метод execute()
возвращает количество затронутых записей (сколько было обновлено или удалено).
Добавить несколько записей
Добавить несколько записей за один запрос можно через метод batchInsert()
.
$pages = [ ['Имя страницы', 'Контент страницы'], ['Имя второй страницы', 'Контент второй страницы'], ['Имя третьей страницы', 'Контент третьей страницы'], ]; Yii::$app->db->createCommand()->batchInsert('post', ['title', 'content'], $pages)->execute();
Метод execute()
вернёт количество добавленных записей.
Поддержать автора