文章一般都有統(tǒng)計瀏覽次數(shù)的需求,一般小型項目的做法就是直接 update 數(shù)據(jù)庫中的某個字段。在 yii 中怎么實現(xiàn)呢?請往下看
yii中如何讓主鍵自動增加? ??
方式一
Yii2 中有這個?updateAllCounters?靜態(tài)方法,這種方式是最快并且最省事的實現(xiàn)方式,代碼示例如下:
Topic::updateAllCounters(['view_count'?=>?1],?['id'?=>?$id]);//?實現(xiàn)的效果就是?view_count?+?1,1根據(jù)你的需求可以是正數(shù)也可以是負(fù)數(shù)。
如果你的條件比較復(fù)雜你可以這樣寫:(相關(guān)教程推薦:yii框架)
Topic::updateAllCounters(['view_count'?=>?1],?['and',?['xxx'?=>?0,?'yyy'?=>?2],?['>',?'zzz',?$time]);
如果你現(xiàn)在的需求是:更新一個字段的值,一個字段的值 +1,你可以試著用這種方式去實現(xiàn):
Topic::updateAll( ????['view_count'?=>?new?Expression('`view_count`?+?1'),?'updated_at'?=>?time()], ????['id'?=>?$id] );
PS:此處的?view_count?字段默認(rèn)值切記不能設(shè)置為?null。
Expression?是表達(dá)式的意思,可以實現(xiàn)更多特殊 SQL,想了解更多,可以去搜索一下文檔。
方式二
當(dāng)然你還可以這樣去實現(xiàn): $model?=?Post::findOne($id); $model->updateCounters(['view_count'?=>?1]);
更多yii框架,請關(guān)注PHP中文網(wǎng)!? ? ? ??
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END