CakePHP 上不必要的保护 deleteall
unnecessary guard on CakePHP deleteall
我接管了 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话是这么说,为什么还要守卫?
"If"这里不需要守卫。
以下代码也能完美地完成您的工作。因为 deleteAll() 双向工作
匹配或不匹配。在这两种情况下,它都会 return true.
$chkFeed = $this->UserFeed->find('count', array('conditions' => array('UserFeed.user_id' => $userID)));
$this->UserFeed->deleteAll(array('UserFeed.user_id' => $userID));
如果 deleteAll 只检查 userID 中的 if 检查仅单个 table。
但是,默认情况下,deleteAll 会在每次执行此行时通过关联的 table 创建一个连接查询。运行。
虽然这对大多数人来说并不重要,除非您在性能上不妥协并且会看到完全优化所有代码。
我接管了 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话是这么说,为什么还要守卫?
"If"这里不需要守卫。
以下代码也能完美地完成您的工作。因为 deleteAll() 双向工作 匹配或不匹配。在这两种情况下,它都会 return true.
$chkFeed = $this->UserFeed->find('count', array('conditions' => array('UserFeed.user_id' => $userID)));
$this->UserFeed->deleteAll(array('UserFeed.user_id' => $userID));
如果 deleteAll 只检查 userID 中的 if 检查仅单个 table。
但是,默认情况下,deleteAll 会在每次执行此行时通过关联的 table 创建一个连接查询。运行。
虽然这对大多数人来说并不重要,除非您在性能上不妥协并且会看到完全优化所有代码。