Merge pull request #49 from kinglozzer/generators

Update SQLServerQuery to use generators
This commit is contained in:
Daniel Hensby 2018-03-17 15:06:11 +00:00 committed by GitHub
commit 7be531dd7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 29 deletions

View File

@ -43,13 +43,21 @@ class SQLServerQuery extends Query
}
}
public function seek($row)
public function getIterator()
{
if (!is_resource($this->handle)) {
return false;
}
if (is_resource($this->handle)) {
while ($data = sqlsrv_fetch_array($this->handle, SQLSRV_FETCH_ASSOC)) {
// special case for sqlsrv - date values are DateTime coming out of the sqlsrv drivers,
// so we convert to the usual Y-m-d H:i:s value!
foreach ($data as $name => $value) {
if ($value instanceof DateTime) {
$data[$name] = $value->format('Y-m-d H:i:s');
}
}
user_error('MSSQLQuery::seek() not supported in sqlsrv', E_USER_WARNING);
yield $data;
}
}
}
public function numRecords()
@ -65,28 +73,4 @@ class SQLServerQuery extends Query
user_error('MSSQLQuery::numRecords() not supported in this version of sqlsrv', E_USER_WARNING);
}
}
public function nextRecord()
{
if (!is_resource($this->handle)) {
return false;
}
if ($data = sqlsrv_fetch_array($this->handle, SQLSRV_FETCH_ASSOC)) {
// special case for sqlsrv - date values are DateTime coming out of the sqlsrv drivers,
// so we convert to the usual Y-m-d H:i:s value!
foreach ($data as $name => $value) {
if ($value instanceof DateTime) {
$data[$name] = $value->format('Y-m-d H:i:s');
}
}
return $data;
} else {
// Free the handle if there are no more results - sqlsrv crashes if there are too many handles
sqlsrv_free_stmt($this->handle);
$this->handle = null;
}
return false;
}
}