比方說,我有一個Widget
表和Yii Model類。Yii創建一個無法保存的模型實例
我想能夠實例化它($tempWidget = new Widget
),但不知何故確保它不能保存到數據庫。我想使用該模型只是爲了用戶測試的東西,模擬...
顯然,我可以避免打電話$tempWidget->save()
,但我想某種形式的標誌,防止保存保存,以防萬一代碼的其他部分試圖這樣做。
比方說,我有一個Widget
表和Yii Model類。Yii創建一個無法保存的模型實例
我想能夠實例化它($tempWidget = new Widget
),但不知何故確保它不能保存到數據庫。我想使用該模型只是爲了用戶測試的東西,模擬...
顯然,我可以避免打電話$tempWidget->save()
,但我想某種形式的標誌,防止保存保存,以防萬一代碼的其他部分試圖這樣做。
有幾種方法可以完成你想要的。最簡單的方法是修改模型beforeSave()
方法來防止模型能夠通過使用CModel unsetAttributes
方法,例如你重置所有屬性保存:
public function beforeSave(){
$this->attributes = $this->unsetAttributes();
}
,如果你有這個模型相關的規則這隻會工作必須填寫字段(至少一個必填字段),否則這將在您的表中創建僅由主鍵組成的條目(假設PK是自動遞增的)。
您不必取消設置屬性。簡單地返回false應該能夠做到這一點。其實,我相信不要調用parent :: beforeSave()應該足夠了。 – MrSoundless
聽起來很有趣。當我想要時,我怎麼才能觸發這個?例如像'新的小工具('temp')'?在正常情況下,'新的Widget'我想要它像正常保存當然。 –
重新實現所有保存方法('save()','insert()','update()',可能還有其他方法)在調用其父實現之前檢查該標誌的狀態。 – DCoder