是否有一种简单的方法可以在CakePHP
中禁用查找查询的连接我有一个Product
模型对象与User有$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
的连接,因为我不使用这些数据。是否有捷径可寻?我希望禁用递归和手动设置字段参数可以解决问题。
答案 0 :(得分:2)
在AppModel中设置public $recursive = -1;
是最佳做法(imo)。这将消除正在进行的自动魔术发现,并且还允许您在需要其他数据时使用Containable,而无需在整个地方将递归设置为-1。
我相信CakePHP 3+,它们将摆脱递归并默认设置为Containable(正如我所听到的那样 - 我还没有验证过。)
(如果你真的不想在任何地方设置它,你可以在查找之前立即设置它 - 但是......最好只在AppModel中设置它并且永远不要改回它)