我的模特中有行为
public function behaviors()
{
return [
[
'class' => SluggableBehavior::className(),
'attribute' => 'title',
// 'slugAttribute' => 'slug',
],
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'created_at',
'updatedAtAttribute' => 'updated_at',
'value' => time(),
],
];
}
一切正常。但我需要只在一个动作中不起作用。 在actionView中有必要不更改“update_at”属性。我的动作查看:
$model = $this->findModel($id);
$model->views++;
$model->save();
如何尽可能正确地做到这一点?
答案 0 :(得分:3)
使用:
$model->save(false, ['views']);
第一个参数确定是否应该运行验证(对于此示例,它不是必需的),第二个参数确定应保存的属性。
Yii2 ActiveRecord - save()或Yii2 ActiveRecord - updateCounters()(更好)
答案 1 :(得分:1)
您可以使用特殊方法ActiveRecord::updateCounters()更新它。
$model = $this->findModel($id);
// Don't forget to check whether the model is null
if ($model !== null) {
$model->updateCounters(['views' => 1]);
}