如何缓存"存在"在Yii2验证

时间:2017-11-12 22:51:37

标签: yii2 yii2-validation

我试图缓存数据库调用以进行Yii2存在验证,但无法确定启动它的位置。

因为我使用的是具有很多关系的多模型表单,所以开销有点过多。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

This is not supported by Yii, you either have to :

  • Extend the ExistValidator and implement your caching logic there
  • Add a custom ActiveQuery class to your model in question and override the exists() and count() methods

答案 1 :(得分:1)

您最好不要。实际上,在an issue on Yii2 official Github project中,框架的核心开发人员之一Alexander Makarov aka @samdark解释了为什么缓存ExistValidator是一个坏主意:

  

现有验证不是要缓存的验证类型。第二个数据库可能会更改其状态,因此应在保存之前对其进行验证。