2017-06-06 50 views
0

我的行为在我的模型定制Yii2 TimestampBehavior

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(); 

我该如何做到尽可能正确?

回答

2

用途:

$model->save(false, ['views']); 

第一个参数确定验证应该运行(在这个例子中,没有必要),第二确定哪些应该保存属性。

Yii2 ActiveRecord - save()Yii2 ActiveRecord - updateCounters()(哪个好)

+0

在db“updated_at”不会改变。但是在视图(渲染)中仍然在改变属性“update_at”。 – Vitaxxxa

+0

'$ model-> refresh()'保存后 – Yupik

+0

是的,它的工作,tnx – Vitaxxxa

0

你可能只是用特殊的方法ActiveRecord::updateCounters()更新。

$model = $this->findModel($id); 
// Don't forget to check whether the model is null 
if ($model !== null) { 
    $model->updateCounters(['views' => 1]); 
}