无法知道execute()的输出(CakePHP3.x)

时间:2018-03-07 15:51:27

标签: cakephp cakephp-3.0

我在数据库中更新一条记录:

$res = $query->update()
        ->set(['activation' => true])
        ->where(['sha1' => $hash])
        ->execute();

请求本身正确执行(当您更改数据库本身时,这是可见的。)。

然后我尝试接收方法execute()的结果:

debug($res->fetchAll('assoc'));

但是给出了错误:数据库错误。

如果我不使用 - > fetchAll('assoc') - 一切正常,但我不知道请求是否正确完成。

我做错了什么?或者我怎么知道执行execute()方法的结果?

2 个答案:

答案 0 :(得分:0)

您可能希望在结果上调用->rowCount()以查看它是否会影响多个行,或者对结果->errorInfo()进行调整以获取任何相关错误。由于这不是一个SELECT查询,因此没有任何resultSet到" fetch",因此调用->fetchAll()确实是错误的方法。

答案 1 :(得分:0)

事实证明,为了找出是否执行了查询以更新数据库中的数据,您需要:

// Create the request object
$query = $this->Users->query();

// Prepare the terms of the request
$query->update()
   ->set(['activation' => true])
   ->where(['sha1' => $hash]);

// We try to execute the query and immediately check the result
if($query->execute()->rowCount() === 1){
    // Query succeeded
} else {
    // Request failed
}