CakePHP-在find()方法中从JOIN中排除模型



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

我目前的情况如下:

我有三种型号:UserLocationOrder。连接是CCD_ 4和CCD_。

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

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

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

用cakefp的Containable解决了问题。代码如下:

$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');

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

在您的情况下:

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

对于普通

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

最新更新