使用 Yii2 时间戳行为返回没有默认值错误'created_at'



尝试使用 Yii2TimestampBehavior但在保存时会返回doesn't have default value错误。

规则中不需要这些值。数据库列是一个INT(11)。 由于我需要保存几行,因此我为此使用了batchInsert()

当我添加一个带有time()的值时,它会将所有内容保存到数据库中。

public function behaviors()
{
return [
'timestamp' => [
'class' => TimestampBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => 'created_at',
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at',
],
'value' => new Expression('NOW()'),
],
'blameable' => [
'class' => BlameableBehavior::className(),
'createdByAttribute' => 'created_by',
'updatedByAttribute' => 'updated_by',
],
];
}
Yii::$app->db->createCommand()->batchInsert( 'table_cms',
[
//all fields but not the timestamps
],
[
//rows here
])
->execute();
batchInsert()

不支持ActiveRecord功能,因此TimestampBehavior在这里不起作用。 如果您调用TimestampBehaviorsave()将使用。在您的情况下,您需要手动传递时间戳。

doesn't have default value可能意味着您正在严格模式下使用 MySQL - 如果您尝试添加记录而不指定所有没有默认值的字段,它会警告您。

最新更新