Yii2 как вернуть значение по умолчанию Mysql?

В Yii2, для возвращения значения по умолчанию из базы данных MySQL, вы можете использовать метод defaultValue() при определении полей модели.

В основном, чтобы вернуть значение по умолчанию, вы должны установить атрибут $defaultValue для поля в модели. Например, если у вас есть поле username, и значение по умолчанию должно быть "Guest", вы можете сделать следующее:

class User extends yiidbActiveRecord
{
    public function rules()
    {
        return [
            [['username'], 'string'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'username' => 'Username',
        ];
    }

    public function attributeDefaults()
    {
        return [
            'username' => 'Guest',
        ];
    }
}

После этого, в модели у вас будет атрибут $defaultValue, и если вы не заполняете поле username или задаете ему значение null, то Yii будет использовать значение $defaultValue:

$user = new User();
echo $user->username; // Выведет "Guest"

$user->username = 'JohnDoe';
echo $user->username; // Выведет "JohnDoe"

$user->username = null;
echo $user->username; // Выведет "Guest"

Если вы уже создали таблицу в базе данных и хотите установить значение по умолчанию на уровне базы данных, то вы можете использовать метод defaultExpression() при определении поля через миграции или вручную в SQL. Его можно использовать для установки значения по умолчанию MySQL, используя функцию DEFAULT:

use yiidbMigration;

class m180101_000000_create_user_table extends Migration
{
    public function up()
    {
        $this->createTable('user', [
            'id' => $this->primaryKey(),
            'username' => $this->string()->defaultValue(null), // Устанавливаем значение по умолчанию NULL
            'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP'), // Используем текущую дату и время как значение по умолчанию
        ]);
    }

    public function down()
    {
        $this->dropTable('user');
    }
}

В этом примере, поле username будет иметь значение по умолчанию null, а поле created_at будет иметь значение по умолчанию текущей даты и времени.

В обоих случаях, учитывайте, что значения по умолчанию на уровне Yii будут установлены только при создании новой записи. Если вы пытаетесь получить значение атрибута, для существующей записи без значения, метод defaultValue() не будет возвращать значение по умолчанию. Вместо этого, Yii вернет null (если значение атрибута не было установлено явно).