尝试使用Yii2 TimestampBehavior
,但是在保存时会返回doesn't have default value
错误。
规则中不需要这些值。 DB列是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();
答案 0 :(得分:0)
batchInsert()
不支持ActiveRecord功能,因此TimestampBehavior
在这里无效。如果您致电TimestampBehavior
,将使用save()
。在您的情况下,您需要手动传递时间戳。
doesn't have default value
可能意味着您正在严格模式下使用MySQL-如果您尝试添加记录而不指定所有没有默认值的字段,它将警告您。