📜  Yii2:为模型的所有属性设置默认值 (1)

📅  最后修改于: 2023-12-03 14:48:41.131000             🧑  作者: Mango

Yii2:为模型的所有属性设置默认值

在 Yii2 中,我们经常需要为模型的属性设置默认值。例如,在创建新记录时,我们希望某些属性的默认值为当前时间戳或其他固定值。有两种常用的方法可以为 Yii2 模型的属性设置默认值:

方式一:在属性定义中设置默认值

在 Yii2 模型类中,我们可以在属性定义中为属性设置默认值。例如:

class MyModel extends \yii\db\ActiveRecord
{
    public $title = 'Default Title';
    public $status = 0;
    public $created_at;

    // ...
}

在上述示例中,$title 属性的默认值为 'Default Title'$status 属性的默认值为 0,$created_at 属性没有默认值。当创建新记录时,如果不显式为这些属性设置值,它们的默认值将会被用于填充这些属性。

但是,在某些情况下,属性定义中设置默认值的方法并不可行。例如,如果默认值需要动态计算或取决于其他模型属性的值,则必须使用方式二。

方式二:在模型的 init() 方法中设置默认值

在 Yii2 中,每个模型都有一个 init() 方法,它在模型被实例化时自动调用。我们可以重写此方法,以在模型的所有属性中设置默认值。例如:

class MyModel extends \yii\db\ActiveRecord
{
    public function init()
    {
        parent::init();
        $this->status = 0;
        $this->created_at = time();
    }

    // ...
}

在上述示例中,我们重写了 init() 方法,并在其中设置了 $status$created_at 属性的默认值。每当创建新记录时,init() 方法都会被调用,为这些属性设置初始值。

总结

在 Yii2 中,我们可以使用属性定义或 init() 方法为模型的属性设置默认值。属性定义适用于固定的默认值,而 init() 方法适用于动态的或需要根据其他属性计算的默认值。这些技巧可以帮助我们编写更加简洁、高效的 Yii2 应用程序。