“如何缓存”;“存在”;Yii2中的验证
我正在尝试缓存Yi2 exists验证的db调用,但无法确定在何处启动它 因为我使用的是一个有很多关系的多模型表单,所以开销有点太大了“如何缓存”;“存在”;Yii2中的验证,yii2,yii2-validation,Yii2,Yii2 Validation,我正在尝试缓存Yi2 exists验证的db调用,但无法确定在何处启动它 因为我使用的是一个有很多关系的多模型表单,所以开销有点太大了 有什么想法吗?Yii不支持这一点,您必须: 扩展ExistValidator,并在那里实现缓存逻辑 将自定义的ActiveQuery类添加到相关模型中并覆盖 exists()和count()方法 你最好不要这样。实际上,框架的核心开发人员Alexander Makarov aka@samdark解释了为什么缓存ExistValidator是个坏主意: Exis
有什么想法吗?Yii不支持这一点,您必须:
- 扩展ExistValidator,并在那里实现缓存逻辑
- 将自定义的
类添加到相关模型中并覆盖ActiveQuery
exists()和
count()方法
- 你最好不要这样。实际上,框架的核心开发人员Alexander Makarov aka@samdark解释了为什么缓存
ExistValidator
是个坏主意:
Exist验证不是要缓存的验证类型。每秒钟数据库都可能更改其状态,因此应在保存之前对其进行验证
Yii不支持这一点,您要么扩展ExistValidator并在那里实现缓存逻辑,要么向相关模型中添加自定义ActiveQuery类并重写exists()和count()methods@Nader我也这么想,只是想我会问一下,以防我错过了什么。如果你想把你的回答作为一个答案,我会把它标记为接受。我大体上同意,但这是一个特定的情况,需要在确定性和性能之间进行权衡。由于所讨论的特定表的性质,这种折衷值得额外的性能。我认为一般的方法是正确的,但在这种情况下需要谨慎地使用规则的例外情况。