Yii2 возвращает NULL для пустых полей в БД

343
03 декабря 2017, 14:04

Вытаскиваю список полей с БД

$this->model->getAttributes()

Получаю

array(6) {
  ["category_id"]=>
  NULL
  ["slug"]=>
  NULL
  ["name"]=>
  NULL

А теперь вопрос почему возвращает NULL, если в БД тип поля NOT NULL ? Почему просто не вернуть пустую строку(которая собственно мне и нужна) ? В чем логика такого поведения ?

У меня проверка стоит в модели

[['name', 'content', 'category_id'], 'required'],

В итоге он спокойно сохраняет эти NULL обратно в БД o_O

Как получить заветные пустые строки, вместо NULL ?

Версия Yii 2.0.13.1(stable)

Answer 1

Доброе утро!
Так происходит потому что поля вашего БД в классе модели отмечаются как свойства. И если в базе поле пустое оно принимается как false и не записывается в модель и поэтому поле останется как не определенное то есть null. Это можно довольно просто исправить.

Пример:
class Model extends yii\db\ActiveRecord {
    public $id;
    /** 
       В итоге если в БД это поле будет пустым то вы получаете
       пустую строку... 
    */
    public $some_string_field = '';
    // Другие методы моделя
}
READ ALSO
Вложение изображений в сообщение

Вложение изображений в сообщение

Как вложить изображение в сообщение?

293
Mysql соединение для демона

Mysql соединение для демона

Пишу проект, в котором серверная часть на PHP запускается в режиме демона, те

217