Запись данных в БД Yii2

В предыдущей статье Мы посмотрели как можно выбрать данные из базе данных. В данной статье мы научимся
писать данные в БД. Используя Yii2.

Исходники данного урока можно скачать тут. И таблицу SQL которая будет использоваться можно скачать тут.

Запись данных в БД (insert):

Как добавлять (сохранять) данные?

Чаще всего, для этой цели используется метод save. Так-же можем использовать метод Update. Но чаще всего используется метод save потому что он более универсален. С ним можно вставлять новые данные и обновлять данные. То-есть можем выполнять операцию Insert и операцию Update.

В зависимости от чего метод save может выполнять Insert либо Update запрос?

Это зависит от состояния объекта ActiveRecord:

  1. Если объект мы создаём с помощью оператора new, тогда будет выполняться SQL запрос Insert.
  2. А если-же мы объект получили с помощью запроса из базе данных, тогда будет выполняться операция Update.

Чтобы сохранять данные нужно, создать модель:

/models/TestForm.php

<?php

namespace app\models;
use yii\db\ActiveRecord; // подключаем ActiveRecord потому что будем работать с базой данных

class TestForm extends ActiveRecord {
    // добавляем метод tableName потому что у нас таблица называется не как модель
    public static function tableName()
    {
        return "posts";
    }
}

?>

И контроллер которые будет работать с нашей моделью:

<?php
namespace app\controllers;
use app\models\Category;
use Yii;
use app\models\TestForm; // подключаем нашу модель

class PostController extends AppController
{
    public function actionIndex() {
        $model = new TestForm(); //создаём объект
        //теперь, будем писать данные в объекте
        $model->name = "Иванов Иван";
        $model->email = "ivan@gmail.com";
        $model->text = "Привет, классные статьи. Спасибо.";
        // и сохраним
        $model->save();
    }
}

Метод save сам вызывает метод validate.

Чтобы отключить валидацию можно просто передать false:

$model->save(false);

Так-же рекомендую пройти и курс Михаила Русакова по фреймворку Yii2.

Valeriu :

Посмотреть комментарии (2)