| @@ 65-90 (lines=26) @@ | ||
| 62 | * @param Closure $callback |
|
| 63 | * @return array[] |
|
| 64 | */ |
|
| 65 | public function fetchRows(Closure $callback = null) { |
|
| 66 | return $this->createTempStatement(function (QueryStatement $statement) use ($callback) { |
|
| 67 | $statement->setFetchMode(PDO::FETCH_ASSOC); |
|
| 68 | $data = $statement->fetchAll(); |
|
| 69 | if($this->preserveTypes) { |
|
| 70 | $columnDefinitions = FieldTypeProvider::getFieldTypes($statement); |
|
| 71 | foreach($data as &$row) { |
|
| 72 | $row = FieldValueConverter::convertValues($row, $columnDefinitions); |
|
| 73 | } |
|
| 74 | } |
|
| 75 | if($callback !== null) { |
|
| 76 | return call_user_func(function ($resultData = []) use ($data, $callback) { |
|
| 77 | foreach($data as $row) { |
|
| 78 | $result = $callback($row); |
|
| 79 | if($result !== null && !($result instanceof DBIgnoreRow)) { |
|
| 80 | $resultData[] = $result; |
|
| 81 | } else { |
|
| 82 | $resultData[] = $row; |
|
| 83 | } |
|
| 84 | } |
|
| 85 | return $resultData; |
|
| 86 | }); |
|
| 87 | } |
|
| 88 | return $data; |
|
| 89 | }); |
|
| 90 | } |
|
| 91 | ||
| 92 | /** |
|
| 93 | * @param Closure $callback |
|
| @@ 142-167 (lines=26) @@ | ||
| 139 | * @return \array[] |
|
| 140 | * @throws \Exception |
|
| 141 | */ |
|
| 142 | public function fetchObjects($className, Closure $callback = null) { |
|
| 143 | return $this->createTempStatement(function (QueryStatement $statement) use ($className, $callback) { |
|
| 144 | $statement->setFetchMode(PDO::FETCH_CLASS, $className); |
|
| 145 | $data = $statement->fetchAll(); |
|
| 146 | if($this->preserveTypes) { |
|
| 147 | $columnDefinitions = FieldTypeProvider::getFieldTypes($statement); |
|
| 148 | foreach($data as &$row) { |
|
| 149 | $row = FieldValueConverter::convertValues($row, $columnDefinitions); |
|
| 150 | } |
|
| 151 | } |
|
| 152 | if($callback !== null) { |
|
| 153 | return call_user_func(function ($resultData = []) use ($data, $callback) { |
|
| 154 | foreach($data as $row) { |
|
| 155 | $result = $callback($row); |
|
| 156 | if($result !== null && !($result instanceof DBIgnoreRow)) { |
|
| 157 | $resultData[] = $result; |
|
| 158 | } else { |
|
| 159 | $resultData[] = $row; |
|
| 160 | } |
|
| 161 | } |
|
| 162 | return $resultData; |
|
| 163 | }); |
|
| 164 | } |
|
| 165 | return $data; |
|
| 166 | }); |
|
| 167 | } |
|
| 168 | ||
| 169 | /** |
|
| 170 | * @param string $className |
|