CakePHP deleteall的不必要的防护措施

问题描述 投票:0回答:2

我已经接管了CakePHP 2.9代码库,并对以下形式的代码感到困惑:

$chkFeed = $this->UserFeed->find('count', array('conditions' => array('UserFeed.user_id' => $userID)));
if ($chkFeed > 0) {
    $this->UserFeed->deleteAll(array('UserFeed.user_id' => $userID));
}

确定if ...防护没有必要吗?即使实际上没有行被删除,您也可以调用deleteAll,对吗? This这么说,那为什么要有警卫呢?

database cakephp sql-delete
2个回答
0
投票

“如果这里不需要护卫。

以下代码也可以完美地完成您的工作。由于deleteAll()双向工作匹配或不匹配。在两种情况下,它都将返回true

$chkFeed = $this->UserFeed->find('count', array('conditions' => array('UserFeed.user_id' => $userID)));
$this->UserFeed->deleteAll(array('UserFeed.user_id' => $userID));

0
投票

如果deleteAll仅在单个表中检查userID,则不必要进行[[if检查。

但是,默认情况下,deleteAll将在关联表中运行,每次执行此行时都会创建一个联接查询。

尽管这对大多数人来说无关紧要,但您的性能不拘一格,并且会完全优化所有代码。

© www.soinside.com 2019 - 2024. All rights reserved.