4

在向我的各种模型类添加了几次 Containable Behavior 之后,我有一个好主意,只需将行放入 AppModel 中,从而使每个模型都可以包含。这让我想知道,是否存在不希望或适得其反的特定模型具有可包含行为的情况?

4

2 回答 2

6

我会说太少而不必担心。我将可包含在 App Model 中:

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

}

无论如何,可包含覆盖递归,因此您实际上不需要将递归设置为-1,但我这样做只是为了清楚起见。始终使用可包含的内容会迫使您进入始终仅使用您想要/需要的内容的最佳实践。对于小型应用程序,仅使用递归并忽略可包含并不是世界末日,但这仍然不是最佳实践。

所以,我想使用递归而不是可包含的唯一理由是,在小型应用程序中,您可以为自己节省少量的开发时间,并且不会真正显着影响性能。我肯定会默认使用可包含的,并在您认为过分的地方将其删除,而不是相反。

于 2013-03-22T10:07:38.130 回答
4

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

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

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

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

不过,containable 的便利性是不可否认的。

于 2013-06-11T15:53:37.580 回答