当我使用batchInsert()插入多个记录时,我遇到了问题。
Yii::$app->db->createCommand()->batchInsert($this->model->tableName(), $columns, $rows)->execute()
我在BaseModel中实现了TimestampBehavior
/**
* @inheritdoc
*/
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'createdAt',
'updatedAtAttribute' => 'updatedAt'
]
];
}
但是当我执行时它不起作用?
答案 0 :(得分:0)
此行为附加到ActiveRecord并在其生命周期中执行,而batchInsert执行原始SQL查询,因此您无法在那里使用它。
您可以生成此列值。
将'createdAt'
和'updatedAt'
添加到$columns
对于$rows
中的每一行,添加time()
作为createdAt
和updatedAt
列的值。
这只是用当前的unix时间戳填充这些列。
答案 1 :(得分:0)
Yii行为是与Active Record
直接相关的功能。
Active Record
与Query Builder
(通过调用Yii::$app->db->createCommand()
获得)基本不同。它们是处理数据库中记录的两种不同方式。
因此,对您的问题最简单的答案是,在使用查询生成器时,您无法使用Yii行为。