永久禁用在Yii中保存模型

永久禁用在Yii中保存模型,yii,Yii,是否可以在yii中创建AR模型,从而禁用save()功能?我使用这些模型来显示从另一个源输入数据库的数据,并且永远不需要更新它 更新: 那么,我应该重写哪些方法,基类中的哪些方法实际上向DB写了一些东西?只需重写save,并让它抛出一个适当的异常。例如: public function save(bool $runValidation=true, array $attributes=NULL) { throw new \LogicException("This kind of model

是否可以在yii中创建AR模型,从而禁用
save()
功能?我使用这些模型来显示从另一个源输入数据库的数据,并且永远不需要更新它

更新:
那么,我应该重写哪些方法,基类中的哪些方法实际上向DB写了一些东西?

只需重写
save
,并让它抛出一个适当的异常。例如:

public function save(bool $runValidation=true, array $attributes=NULL)
{
    throw new \LogicException("This kind of model does not support saving.");
}
通过这种方式,任何人都可以清楚地知道错误调用该方法的原因


不要忘记重写,因为这两个方法不幸是完全独立的。

只需重写
save
,并让它抛出适当的异常。例如:

public function save(bool $runValidation=true, array $attributes=NULL)
{
    throw new \LogicException("This kind of model does not support saving.");
}
通过这种方式,任何人都可以清楚地知道错误调用该方法的原因


不要忘记重写,因为这两个方法不幸是完全独立的。

只需重写
save
,并让它抛出适当的异常。例如:

public function save(bool $runValidation=true, array $attributes=NULL)
{
    throw new \LogicException("This kind of model does not support saving.");
}
通过这种方式,任何人都可以清楚地知道错误调用该方法的原因


不要忘记重写,因为这两个方法不幸是完全独立的。

只需重写
save
,并让它抛出适当的异常。例如:

public function save(bool $runValidation=true, array $attributes=NULL)
{
    throw new \LogicException("This kind of model does not support saving.");
}
通过这种方式,任何人都可以清楚地知道错误调用该方法的原因



不要忘了重写,因为不幸的是这两个方法完全独立。

为什么不能。。在这些模型上不使用
save()
方法?您希望实现什么?重写save()并仅返回true;那好吗?实际上我从来没有使用过
save()
,但是我真的不知道
save()
是否真的是将某些内容写入数据库的唯一地方。在我的模型中重写
save()
是否足以确保不会编写任何do DB?为什么您不能。。在这些模型上不使用
save()
方法?您希望实现什么?重写save()并仅返回true;那好吗?实际上我从来没有使用过
save()
,但是我真的不知道
save()
是否真的是将某些内容写入数据库的唯一地方。在我的模型中重写
save()
是否足以确保不会编写任何do DB?为什么您不能。。在这些模型上不使用
save()
方法?您希望实现什么?重写save()并仅返回true;那好吗?实际上我从来没有使用过
save()
,但是我真的不知道
save()
是否真的是将某些内容写入数据库的唯一地方。在我的模型中重写
save()
是否足以确保不会编写任何do DB?为什么您不能。。在这些模型上不使用
save()
方法?您希望实现什么?重写save()并仅返回true;那好吗?实际上我从来没有使用过
save()
,但是我真的不知道
save()
是否真的是将某些内容写入数据库的唯一地方。在我的模型中重写
save()
是否足以确保没有编写任何DoDB?这正是问题所在。我应该覆盖哪些方法?@Beowulfenator:不可能禁止通过模型本身发出写操作的所有可能性(Yii没有帮助)。您需要将替换为您自己的版本,该版本拒绝生成写命令,甚至有人可以直接访问
dbConnection
,并完成该操作。良好的设计要求在数据库级别强制禁止写操作;如果你忘了,模型本身应该提醒你。哦,这是个好主意。限制db user的权限以防止意外的数据损坏,并重写类中的那些方法。这正是问题所在。我应该覆盖哪些方法?@Beowulfenator:不可能禁止通过模型本身发出写操作的所有可能性(Yii没有帮助)。您需要将替换为您自己的版本,该版本拒绝生成写命令,甚至有人可以直接访问
dbConnection
,并完成该操作。良好的设计要求在数据库级别强制禁止写操作;如果你忘了,模型本身应该提醒你。哦,这是个好主意。限制db user的权限以防止意外的数据损坏,并重写类中的那些方法。这正是问题所在。我应该覆盖哪些方法?@Beowulfenator:不可能禁止通过模型本身发出写操作的所有可能性(Yii没有帮助)。您需要将替换为您自己的版本,该版本拒绝生成写命令,甚至有人可以直接访问
dbConnection
,并完成该操作。良好的设计要求在数据库级别强制禁止写操作;如果你忘了,模型本身应该提醒你。哦,这是个好主意。限制db user的权限以防止意外的数据损坏,并重写类中的那些方法。这正是问题所在。我应该覆盖哪些方法?@Beowulfenator:不可能禁止通过模型本身发出写操作的所有可能性(Yii没有帮助)。您需要将替换为您自己的版本,该版本拒绝生成写命令,甚至有人可以直接访问
dbConnection
,并完成该操作。良好的设计要求在数据库级别强制禁止写操作;如果你忘了,模型本身应该提醒你。哦,这是个好主意。限制db user的权限以防止意外数据损坏,并重写类中的那些方法。