2013-03-22 61 views
4

经过几次将可容忍行为添加到我的各种模型类后,我有一个很好的想法,只需将该行代入AppModel,从而使每个模型都可以包含。这就让我想知道,有没有什么情况下,某种特定的模型具有可控行为是不可取的或者适得其反的呢?何时不在CakePhp 2.x中使用可容忍的行为

回答

6

我会说太少不用担心。我在应用模型把中可容纳:

class AppModel extends Model { 
    public $recursive = -1; 
    public $actsAs = array('Containable'); 

} 

递归中容纳覆盖,所以你并不真的需要设置递归为-1,但我只是为了清楚起见做。始终使用可控制的力量,使您始终只使用自己想要/需要的最佳做法。对于小应用程序来说,使用递归和忽略可容忍并不是世界末日,但它仍然不是最佳实践。

所以,我猜想使用递归而不是包含的唯一参数是在小应用程序中,您可以节省自己很少的开发时间,并且不会明显影响性能。我肯定会使用默认情况下使用容易,并删除它认为它是过度杀伤,而不是其他方式。

4

可封闭可能是危险的B/C为了获得嵌套结果,Cake以非常低效的方式运行。

这个网站解释得很好...

http://www.endyourif.com/cakephp-containable-statement-pitfalls/

但基本上你是找回了不错的数组是许多不同的查询结果,而你的最佳性能可能来自使用单个查询与联接。

但是,包容性的便利性无可否认。

+0

好吧,在阅读您链接的文章后,我特别注意到一个声明: **“在做了一些研究之后,显然CakePHP在1.2.x中不会解决这个问题。谣言说它将在第2版中得到解决,但我会非常兴奋。“** 现在,问题是我到底能够在官方源代码中阅读这些内容?因为,我怀疑它(关注)仍然存在。看起来很蹩脚的是执行100个'选择'而不是简单的'JOIN'。顺便说一句,参考2.x文档和3.x文档将是很好的。 – Fr0zenFyr 2015-09-14 06:20:30