@@ -80,7 +80,9 @@ public function fetchRowsLazy(Closure $callback = null) {
80
80
* @throws \Exception
81
81
*/
82
82
public function fetchRow (Closure $ callback = null ) {
83
- return $ this ->fetch ($ callback , PDO ::FETCH_ASSOC );
83
+ return $ this ->fetch ($ callback , PDO ::FETCH_ASSOC , null , function ($ row ) {
84
+ return ['valid ' => is_array ($ row ), 'default ' => []];
85
+ });
84
86
}
85
87
86
88
/**
@@ -109,7 +111,9 @@ public function fetchObjectsLazy($className, Closure $callback = null) {
109
111
* @throws \Exception
110
112
*/
111
113
public function fetchObject ($ className , Closure $ callback = null ) {
112
- return $ this ->fetch ($ callback , PDO ::FETCH_CLASS , $ className );
114
+ return $ this ->fetch ($ callback , PDO ::FETCH_CLASS , $ className , function ($ row ) {
115
+ return ['valid ' => is_object ($ row ), 'default ' => null ];
116
+ });
113
117
}
114
118
115
119
/**
@@ -279,15 +283,17 @@ private function fetchLazy(Closure $callback = null, $mode, $arg0 = null) {
279
283
* @param Closure $callback
280
284
* @param int $mode
281
285
* @param mixed $arg0
286
+ * @param Closure $resultValidator
282
287
* @return mixed
283
288
* @throws \Exception
284
289
*/
285
- private function fetch (Closure $ callback = null , $ mode , $ arg0 = null ) {
286
- return $ this ->createTempStatement (function (QueryStatement $ statement ) use ($ callback , $ mode , $ arg0 ) {
290
+ private function fetch (Closure $ callback = null , $ mode , $ arg0 = null , Closure $ resultValidator = null ) {
291
+ return $ this ->createTempStatement (function (QueryStatement $ statement ) use ($ callback , $ mode , $ arg0, $ resultValidator ) {
287
292
$ statement ->setFetchMode ($ mode , $ arg0 );
288
293
$ row = $ statement ->fetch ();
289
- if (!is_array ($ row )) {
290
- return [];
294
+ $ result = $ resultValidator ($ row );
295
+ if (!$ result ['valid ' ]) {
296
+ return $ result ['default ' ];
291
297
}
292
298
if ($ this ->preserveTypes ) {
293
299
$ columnDefinitions = FieldTypeProvider::getFieldTypes ($ statement );
0 commit comments