Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何缓存”;“存在”;Yii2中的验证_Yii2_Yii2 Validation - Fatal编程技术网

“如何缓存”;“存在”;Yii2中的验证

“如何缓存”;“存在”;Yii2中的验证,yii2,yii2-validation,Yii2,Yii2 Validation,我正在尝试缓存Yi2 exists验证的db调用,但无法确定在何处启动它 因为我使用的是一个有很多关系的多模型表单,所以开销有点太大了 有什么想法吗?Yii不支持这一点,您必须: 扩展ExistValidator,并在那里实现缓存逻辑 将自定义的ActiveQuery类添加到相关模型中并覆盖 exists()和count()方法 你最好不要这样。实际上,框架的核心开发人员Alexander Makarov aka@samdark解释了为什么缓存ExistValidator是个坏主意: Exis

我正在尝试缓存Yi2 exists验证的db调用,但无法确定在何处启动它

因为我使用的是一个有很多关系的多模型表单,所以开销有点太大了


有什么想法吗?

Yii不支持这一点,您必须:

  • 扩展ExistValidator,并在那里实现缓存逻辑
  • 将自定义的
    ActiveQuery
    类添加到相关模型中并覆盖
    exists()和
    count()方法

    • 你最好不要这样。实际上,框架的核心开发人员Alexander Makarov aka@samdark解释了为什么缓存
      ExistValidator
      是个坏主意:

      Exist验证不是要缓存的验证类型。每秒钟数据库都可能更改其状态,因此应在保存之前对其进行验证


      Yii不支持这一点,您要么扩展ExistValidator并在那里实现缓存逻辑,要么向相关模型中添加自定义ActiveQuery类并重写exists()和count()methods@Nader我也这么想,只是想我会问一下,以防我错过了什么。如果你想把你的回答作为一个答案,我会把它标记为接受。我大体上同意,但这是一个特定的情况,需要在确定性和性能之间进行权衡。由于所讨论的特定表的性质,这种折衷值得额外的性能。我认为一般的方法是正确的,但在这种情况下需要谨慎地使用规则的例外情况。