CakePHP找到“包含”

时间:2014-07-20 08:01:33

标签: cakephp containable

我的模型与其他表/模型有很多关系,如果我使用包含参数,例如在一个模型的结果中按字段排序,查询结果中的所有其他表都缺失,并且必须手动编写包含参数,如何我可以在不手动编写数据的情况下获取所有相关模型数据吗?

 $data = $this->Cv->find('first', 
    array(
        'contain' => array('Cv_experience' => array('order' => 'Cv_experience.start_year desc'))));

1 个答案:

答案 0 :(得分:0)

听起来你一直依赖于模特的recursive财产。一旦您使用'包含',那些曾经自动进入的模型不再适用,对吧?

答案是,您应该使用recursivecontain,而不是两者。如果您正在使用contain,则应将递归设置为OFF($recursive = -1;)。

至于使用哪个,强烈建议不要使用recursve。在AppModel中将其设置为-1,并在您需要其他数据时使用可包含行为。除了一个简单的博客应用程序之外,递归是一种不好的做法,我相信甚至可以在Cake 3中完全删除。

订购注意事项:您无法按包含的型号订购。 '含有'创建多个查询,因此 - 如果您想要执行您尝试的操作,则需要使用JOIN。