创建一个不能保存的模型实例


Yii Make a model instance that cannot be saved

假设我有一个Widget表和与之配套的Yii Model类。

我希望能够实例化它($tempWidget = new Widget),但以某种方式确保它不能保存到数据库。我想使用模型只是为了让用户测试东西,模拟…

显然,我可以避免调用$tempWidget->save(),但我想要某种标志,以防止保存保存,以防其他部分的代码试图这样做

有几种方法可以实现您想要的。最简单的方法是修改模型的beforeSave()方法,通过使用CModel unsetAttributes方法取消设置所有属性来防止模型无法保存,示例:

public function beforeSave(){
    $this->attributes = $this->unsetAttributes();
}

只有当与该模型关联的规则具有必填项(至少一个必填项)时,这才会起作用,否则将在表中创建一个仅由主键组成的条目(假设PK是自动递增的)。