在我的各种模型类中添加Containable Behavior几次之后,我很清楚只需将该行放入AppModel中,从而使每个模型都可以包含。然后让我想知道,是否存在某种特定模型具有可包含行为不可取或适得其反的情况?
答案 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/
基本上,虽然您回来的好数组是许多不同查询的结果,而您的最佳性能可能来自使用带连接的单个查询。
尽管如此,包容的便利是不可否认的。