diff --git a/lib/Cake/Model/Datasource/DboSource.php b/lib/Cake/Model/Datasource/DboSource.php index 967f4bade..0546690ea 100644 --- a/lib/Cake/Model/Datasource/DboSource.php +++ b/lib/Cake/Model/Datasource/DboSource.php @@ -440,7 +440,9 @@ class DboSource extends DataSource { } if (!$query->columnCount()) { $query->closeCursor(); - return true; + if (!$query->rowCount()) { + return true; + } } return $query; } catch (PDOException $e) { diff --git a/lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php b/lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php index 2f0c37060..6585c098b 100644 --- a/lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php +++ b/lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php @@ -223,6 +223,30 @@ class MysqlTest extends CakeTestCase { $this->assertIdentical($result['Tinyint']['small_int'], '0'); $this->model->deleteAll(true); + $this->Dbo->rawQuery('DROP TABLE ' . $this->Dbo->fullTableName($tableName)); + } +/** + * testLastAffected method + * + * + * @return void + */ + public function testLastAffected() { + $this->Dbo->cacheSources = false; + $tableName = 'tinyint_' . uniqid(); + $this->Dbo->rawQuery('CREATE TABLE ' . $this->Dbo->fullTableName($tableName) . ' (id int(11) AUTO_INCREMENT, bool tinyint(1), small_int tinyint(2), primary key(id));'); + + $this->model = new CakeTestModel(array( + 'name' => 'Tinyint', 'table' => $tableName, 'ds' => 'test' + )); + + $this->assertTrue((bool)$this->model->save(array('bool' => 5, 'small_int' => 5))); + $this->assertEqual(1, $this->model->find('count')); + $this->model->deleteAll(true); + $result = $this->Dbo->lastAffected(); + $this->assertEqual(1, $result); + $this->assertEqual(0, $this->model->find('count')); + $this->Dbo->rawQuery('DROP TABLE ' . $this->Dbo->fullTableName($tableName)); }