Обновление SQL Zend Framework 2 и вставка затронутых строк (ZF2)
Это простой вопрос, но я огляделся и не смог найти ответ. Как извлечь количество затронутых строк из запросов на обновление / вставку SQL в ZF2?
Следующий код работает хорошо для меня (он обновляет), но я хотел бы выполнить правильные проверки ошибок:
public function updateSomeField($id, $some_field){
$data = array(
'some_field' => $some_field
);
$sql = new Sql($this->dbAdapter);
$update = $sql->update();
$update->table('Table1');
$update->set($data);
$update->where(array('id' => $id));
$statement = $sql->prepareStatementForSqlObject($update);
// need help with the code below...
// got this from here:
// http://stackru.com/questions/11491249/zend-framework-db-update-result
$result = 0;
try {
$result = $statement->execute(); // works fine
} catch (\Exception $e) {
die('Error: ' . $e->getMessage());
}
if (empty($result)) { // not sure if this is applicable??
die('Zero rows affected');
}
return $result; // ideally, I'd like to return $numRows
}
В настоящее время при успешном выполнении $result является объектом. Я пытался изменить это, но он не показывает значения.
Любая помощь будет оценена. Благодарю.
2 ответа
Вот бегущий код как ответ (потому что его легче найти, чем в комментариях)
try {
$affectedRows = $statement->execute()->getAffectedRows();
} catch (\Exception $e) {
die('Error: ' . $e->getMessage());
}
if (empty($affectedRows)) {
die('Zero rows affected');
}
return $affectedRows;
Ты пытался:
if ( $result->count() === 0 ) {
die('Zero rows affected');
}
? Насколько я помню, он считает что-нибудь исчисляемое, в том числе затрагиваемые_волны.