May*_*ama 3 php cakephp query-builder cakephp-3.x
我使用 cakePHP 3.0 作为后端 API。这是我的代码。
namespace App\Controller;
use Cake\Datasource\ConnectionManager;
use Cake\ORM\TableRegistry;
use App\Controller\AppController;
use Cake\Routing\Router;
class MainController extends AppController {
public function myMethod() {
$groupRegistry = TableRegistry::get('MyModel');
$query = $groupRegistry->query();
$params = $this->request->data;
$return = $query->update()
->set(['my_flag' => $params['flag']])
->where(['id' => $params['id']])
->execute();
if (empty($return)) {
return $this->outStatusJson('ERR100', 'Error Updating.');
}
return $this->outStatusJson('0', 'OK');
}
}
Run Code Online (Sandbox Code Playgroud)
我无法跟踪$query->update()的响应
任何帮助都会拯救我的一天。
Query::execute()
将返回一个实现 的语句对象\Cake\Database\StatementInterface
,从而公开一个rowCount()
返回受该语句影响的行数的方法。
所以你可以简单地这样做:
$affectedRows = $return->rowCount();
Run Code Online (Sandbox Code Playgroud)
还有一种Table::updateAll()
您可以使用的方法,它完全执行您正在执行的操作(+关闭游标),并将返回受影响的行数。
$affectedRows = $groupRegistry->updateAll(
['my_flag' => $params['flag']],
['id' => $params['id']]
);
Run Code Online (Sandbox Code Playgroud)
也可以看看
附注
我希望您知道您在那里做什么,当使用低级查询时,您的数据不会被验证,并且模型保存事件不会被触发!