2

有没有一种简单的方法可以在 CakePHP 中禁用查找查询的连接

我有一个与用户Product有关系的模型对象。$belongsTo我的查找查询是:

$product = $this->Product->find('first',array(
    'fields' => array(
        'Product.name'
    ),
    'conditions' => array(
        'Product.active'=>1,
    ),

    'recursive' => false
));

执行的 sql 查询如下所示:

SELECT `Product`.`name` FROM `db`.`products` AS `Product` LEFT JOIN `db`.`users` AS `Owner` ON (`Product`.`owner_id` = `Owner`.`id`) LIMIT 1

users现在,出于性能原因并且我不使用数据,我想摆脱加入。是否有捷径可寻?我希望禁用递归并手动设置字段参数可以解决问题。

4

1 回答 1

2

public $recursive = -1;在您的 AppModel中设置是最佳实践 (imo) 。这将摆脱不断发生的自动魔术发现,并且还允许您在需要额外数据时使用Containable,而无需在所有地方将递归设置为 -1。

我相信 CakePHP 3+,他们将摆脱递归并默认启用 Containable (正如我所听到的 - 我还没有验证)。

(如果您真的不想在任何地方设置它,您可以在找到之前立即设置它 - 但是......最好只在 AppModel 中设置它并且永远不要将其更改回来)

于 2013-02-24T02:39:28.070 回答