假设我有一个Widget
表和与之配套的Yii Model类。
我希望能够实例化它($tempWidget = new Widget
),但以某种方式确保它不能保存到数据库。我想使用模型只是为了让用户测试东西,模拟…
显然,我可以避免调用$tempWidget->save()
,但我想要某种标志,以防止保存保存,以防其他部分的代码试图这样做
有几种方法可以实现您想要的。最简单的方法是修改模型的beforeSave()
方法,通过使用CModel unsetAttributes
方法取消设置所有属性来防止模型无法保存,示例:
public function beforeSave(){
$this->attributes = $this->unsetAttributes();
}
只有当与该模型关联的规则具有必填项(至少一个必填项)时,这才会起作用,否则将在表中创建一个仅由主键组成的条目(假设PK是自动递增的)。