Php Yii生成无法保存的模型实例
假设我有一个Php Yii生成无法保存的模型实例,php,yii,yii-cmodel,Php,Yii,Yii Cmodel,假设我有一个小部件表和它附带的Yii模型类 我希望能够实例化它($tempWidget=newwidget),但要确保它不能保存到数据库中。我想使用这个模型只是为了让用户测试,模拟 显然,我可以避免调用$tempWidget->save(),但我希望使用某种标志阻止save保存,以防代码的其他部分尝试这样做。有几种方法可以实现您想要的功能。最简单的方法是修改模型beforeSave()方法,通过使用CModel unsetAttributes方法取消设置所有属性,以防止模型能够保存,例如: pu
小部件
表和它附带的Yii模型类
我希望能够实例化它($tempWidget=newwidget
),但要确保它不能保存到数据库中。我想使用这个模型只是为了让用户测试,模拟
显然,我可以避免调用
$tempWidget->save()
,但我希望使用某种标志阻止save保存,以防代码的其他部分尝试这样做。有几种方法可以实现您想要的功能。最简单的方法是修改模型beforeSave()
方法,通过使用CModel unsetAttributes
方法取消设置所有属性,以防止模型能够保存,例如:
public function beforeSave(){
$this->attributes = $this->unsetAttributes();
}
只有当与此模型关联的规则具有必填字段(至少一个必填字段)时,这才有效,否则这将在表中创建一个仅包含主键的条目(假设PK是自动递增的)。重新执行所有保存方法(
save()
,insert()
,update()
,可能是其他)在调用其父实现之前检查此标志的状态。您不必取消设置属性。简单地返回false就可以了。实际上,我认为不调用parent::beforeSave()就足够了。听起来很有趣。我怎样才能在我想要的时候触发它呢?例如,类似于newwidget('temp')
?在正常情况下,newwidget
我当然希望它像正常情况一样保存。