📅  最后修改于: 2023-12-03 14:48:41.131000             🧑  作者: Mango
在 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 应用程序。