Содержание
Настройка с базой данных
Настройки с базой данных указаны в файле config/ db.php .
Сначала надо создать модель для связи с базой данных, создав файл с именем таблицы в папке models/.
В контроллере данный файл подключается через код ниже:
Пример выборки записей.
Добавить запись можно через следующий код:
Обновить запись можно через следующий код:
Обновить несколько записей можно через метод updateAll() .
Метод updateAll() возвращает количество обновлённых записей.
Удаление записи происходит через метод delete() .
Удалить несколько записей можно через метод deleteAll() .
Метод deleteAll() возвращает количество удалённых записей.
Метод save() может вставить или обновить строку данных в зависимости от состояния ActiveRecord объекта. Если объект создан с помощью оператора new , вызов метода save() приведёт к вставке новой строки данных. Если же объект был получен с помощью запроса на получение данных, вызов save() обновит строку таблицы, соответствующую объекту ActiveRecord.
Различать два состояния ActiveRecord объекта можно с помощью проверки значения его свойства isNewRecord . Это свойство также используется внутри метода save() :
Т.к. класс yiidbActiveRecord наследует класс yiiaseModel , он обладает такими же возможностями валидации данных. Можно объявить правила валидации, переопределив метод rules() и осуществлять валидацию данных посредством вызовов метода validate() .
При вызове метода save() , по умолчанию он автоматически вызывает метод validate() . Только после успешного прохождения валидации происходит сохранение данных; в ином случае метод save() просто возвращает false , и для получения сообщения об ошибках можно проверить свойство errors .
Давайте посмотрим, как можно использовать методы insert() , update() и delete() . У нас уже есть форма обратной связи и мы умеем сохранять сообщения в базу данных. Добавим возможность просмотра списка всех сообщений и возможность их редактирования и удаления.
Модель остается без изменений:
Контроллер содержит action -ы:
- actionIndex() — список всех сообщений
- actionInsert() — добавляет новое сообщение
- actionUpdate() — позволяет обновить сообщение
- actionDelete() — позволяет удалить сообщение
И два view-шаблона — для списка сообщений и для формы добавления и редактирования:
Часто бывает необходимым обновить или удалить несколько записей по одному условию. Для этого есть методы updateAll() и deleteAll() .
В заключительной статье по работе с запросами в Yii 2.x рассмотрим примеры добавления, изменения и удаления данных из таблицы. За основу берем таблицу Country (Страны) известную нам из предыдущих 3 статей. Таблица состоит из следующих полей: номер (id), название страны (name), количество жителей (number) и площадь (area).
Добавление данных в таблицу
Insert() или Save()
Insert(), save() осуществляют добавление данных в таблицу. Добавим в таблицу Country Англию.
Insert() при работе с DAO
Рассмотрим 2 способ добавления записи
batchInsert()
batchInsert() добавляет сразу несколько записей. Добавим в таблицу Country 2 страны Аргентину и китай
Изменение данных в таблице
Update() или Save()
update(), save() осуществляют изменения данных в таблице. Изменим численность населения в Китае
UpdateAll()
UpdateAll() — обновляет все записи. Сделаем количество всех жителей всех стран 1000000000
Update() при работе с DAO
Изменим численность жителей в России
Update с помощью SQL запроса
Приведем аналогичный пример только с помощью SQL запроса
Удаление данных из таблицы
Delete()
delete() удаляет данные из таблицы. Удалим Китай из таблицы Country.
Delete() при работе с DAO
Приведем второй способ
Delete() с параметрами
Удалим Аргентину и Англию
DeleteAll()
DeleteAll() удаляет все записи. Удалим все страны у которых на данный момент в таблице количество жителей равно 1000000000
Внимание: Таблица может иметь подчиненные таблицы, и тогда запрос на удаление записи или нескольких записей выдаст ошибку. Для решения проблемы необходимо изначально удалить все записи в подчиненной таблице, связанные с записью или записами во внешней таблице, а затем удалить запись во внешней таблице!