0

我的模型与其他表/模型有很多关系,如果我使用包含参数,例如在一个模型的结果中按字段排序,查询结果中的所有其他表都丢失了,并且必须手动写入包含参数,我怎么能得到所有相关模型数据无需手动编写?

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

1 回答 1

0

听起来您一直在依赖模型的recursive属性。一旦你使用“包含”,那些过去自动进入的模型不再这样做,对吗?

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

至于使用哪个,强烈建议不要使用recursve。在您的 AppModel 中将其设置为 -1,并在您需要其他数据时随时使用 Containable Behavior。除了简单的博客应用程序之外,递归对于任何东西都是不好的做法,我相信它甚至在 Cake 3 中被完全删除。

订购注意事项:您不能按包含的型号订购。“包含”创建多个查询,所以 - 如果你想做你正在尝试的事情,你需要使用 JOIN。

于 2014-07-20T19:08:03.413 回答