0

我对包含 :( 有疑问,让我解释一下:

模型关系:

客户 -> hasMany -> 卡 -> hasAndBelongsToMany -> 合作伙伴 -> hasMany -> 联系人

我需要的是使用 codigo = 24150 和 coords_lat = 38.71093 获取客户的所有合作伙伴和联系人。

代码:

$conditions = array('conditions' => 
   array('codigo' => '24150')
);

$contain = array(
   'contain'=> array(
    'Partner' => array(
       'Contact' => array('conditions' => array('coords_lat' => '38.71093')) 
    )
   )
);

$parceiros = $this->Client->find('all', array($conditions, $contain));

我已经添加

var $actsAs = array('Containable'); 

到 app_model.php

老实说,我真的不明白这里发生了什么......事实是mysql会进行大量查询并花费大量时间,但我没有看到它通过“codigo = 24150”进行选择

我会很感激一些帮助。

提前致谢。

4

3 回答 3

2

您也可以保留两个数组$conditions$contain分开..

并将最后一行更改为:

$parceiros = $this->Client->find('all', array_merge($conditions, $contain));

注意 array_merge 函数..
这应该可以解决您的问题,而无需为它们都使用一个数组

于 2011-04-05T18:40:52.580 回答
1

您应该收到一条错误消息,指出客户与合作伙伴无关。尝试以下

$this->Client->contain(
    'Card'=>array('Partner' => array(
       'Contact' => array('conditions' => array('coords_lat' => '38.71093')) 
    )
   )
)
);

$parceiros = $this->Client->find('all', array('conditions' => 
                                            array('Client.codigo' => '24150')
                                            )
                                  )
于 2011-04-05T12:08:05.930 回答
1

最后修复它,cakephp 不喜欢有条件并包含在不同的数组中。解决方案是:

$conditions = array(
    'conditions' => array('codigo' => '24150'),
    'contain' => array(
        'Card'=>array(
            'Partner' => array (
                'Contact' => array(
                    'conditions' => array('Contact.coords_lat' => '38.710930')
                 )
             )
         )
     )
 );

 $parceiros = $this->Client->find('all', $conditions);
于 2011-04-05T16:32:31.590 回答