Yii2 запись в бд

Настройка с базой данных

Настройки с базой данных указаны в файле 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 .

Читайте также:  Huawei honor 4c pro прошивка

Давайте посмотрим, как можно использовать методы 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.

Читайте также:  Assassin s creed unity ps4

Delete() при работе с DAO

Приведем второй способ

Delete() с параметрами

Удалим Аргентину и Англию

DeleteAll()

DeleteAll() удаляет все записи. Удалим все страны у которых на данный момент в таблице количество жителей равно 1000000000

Внимание: Таблица может иметь подчиненные таблицы, и тогда запрос на удаление записи или нескольких записей выдаст ошибку. Для решения проблемы необходимо изначально удалить все записи в подчиненной таблице, связанные с записью или записами во внешней таблице, а затем удалить запись во внешней таблице!

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *