CakePHP - 在find()方法

时间:2016-06-10 12:24:18

标签: php cakephp join recursion find

我目前正在使用CakePHP及其find()方法处理数据库查询的项目。

我目前的情况如下:

我有3个模型:UserLocationOrder。连接是User hasOne LocationUser hasMany Orders

当我使用find()方法获取User和地址(存储在Location模型中)时,CakePHP返回User,Location和Order Models。就我而言,我不需要订单信息。

所以我的问题是:是否有可能告诉CakePHP不要加入订单模型?

我知道recursive属性,但如果我将其设置为-1,CakePHP只返回用户模型,而在递归&gt; = 0的情况下,它返回所有3个模型。< / p>

2 个答案:

答案 0 :(得分:2)

解决了包含cakephp的问题。代码如下:

$this->User->Behaviors->load('Containable');

$this->User->recursive = -1;
$this->paginate = array('fields' => array('User.*'),
                        'contain' => array('Location'=>array('field1', 'field2')
                       );

$user = $this->Paginator->paginate('User');

答案 1 :(得分:1)

您可以使用解除绑定模型功能来排除所需的模型

在你的情况下:

$this->User->unbindModel(array('hasMany' => 'Orders'));

常见的

$this->User->unbindModel(
            array(
                'hasMany' => array('Model1','Model2'),
                'hasOne' => array('Model1','Model2'),
                'belongsTo' => array('Model1','Model2'),
                )
        );