尝试使用 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
在这里不起作用。 如果您调用TimestampBehavior
save()
将使用。在您的情况下,您需要手动传递时间戳。
doesn't have default value
可能意味着您正在严格模式下使用 MySQL - 如果您尝试添加记录而不指定所有没有默认值的字段,它会警告您。