【问题标题】:Disabling join on CakePHP find function在 CakePHP 查找功能上禁用连接
【发布时间】:2013-02-23 23:23:25
【问题描述】:

有没有一种简单的方法可以在 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 的联接,出于性能原因并且我不使用数据。是否有捷径可寻?我希望禁用递归并手动设置字段参数可以解决问题。

【问题讨论】:

标签: cakephp cakephp-2.0 cakephp-2.3


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多