簡體   English   中英

自定義Yii2時間戳行為

[英]Custom 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”屬性。 我的actionView:

$model = $this->findModel($id);
$model->views++;
$model->save();

我如何才能盡可能正確地做到這一點?

采用:

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

第一個參數確定是否應該運行驗證(對於此示例,這不是必需的),第二個參數確定應保存的屬性。

Yii2 ActiveRecord-save()Yii2 ActiveRecord-updateCounters() (更好)

您可以使用特殊方法ActiveRecord :: updateCounters()對其進行更新。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM