何时不在CakePhp 2.x中使用可包含行为

时间:2013-03-22 03:19:57

标签: cakephp-2.0 containable

在我的各种模型类中添加Containable Behavior几次之后,我很清楚只需将该行放入AppModel中,从而使每个模型都可以包含。然后让我想知道,是否存在某种特定模型具有可包含行为不可取或适得其反的情况?

2 个答案:

答案 0 :(得分:6)

我想说太少担心。我把可容纳在App Model:

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

}
无论如何,

可包含的覆盖是递归的,因此你不需要将递归设置为-1,但我只是为了清楚起见。始终使用可控制的力量使您始终只使用您想要/需要的最佳实践。对于小型应用程序,使用递归和忽略可包含的东西并不是世界末日,但它仍然不是最佳实践。

因此,我认为使用递归而不是包含的唯一论据是,在小型应用程序中,您可以节省很少的开发时间,并且它不会真正显着影响性能。我肯定会默认使用可包含的东西,并在你认为过度杀戮的地方删除它,而不是相反。

答案 1 :(得分:4)

可包含可能是危险的b / c Cake以极低效的方式运行以获得嵌套结果。

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

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

基本上,虽然您回来的好数组是许多不同查询的结果,而您的最佳性能可能来自使用带连接的单个查询。

尽管如此,包容的便利是不可否认的。