| @@ 115-134 (lines=20) @@ | ||
| 112 | * @return string[] |
|
| 113 | * @throws \Exception |
|
| 114 | */ |
|
| 115 | public function fetchRow(Closure $callback = null) { |
|
| 116 | return $this->createTempStatement(function (QueryStatement $statement) use ($callback) { |
|
| 117 | $statement->setFetchMode(PDO::FETCH_ASSOC); |
|
| 118 | $row = $statement->fetch(); |
|
| 119 | if(!is_array($row)) { |
|
| 120 | return []; |
|
| 121 | } |
|
| 122 | if($this->preserveTypes) { |
|
| 123 | $columnDefinitions = FieldTypeProvider::getFieldTypes($statement); |
|
| 124 | $row = FieldValueConverter::convertValues($row, $columnDefinitions); |
|
| 125 | } |
|
| 126 | if($callback !== null) { |
|
| 127 | $result = $callback($row); |
|
| 128 | if($result !== null) { |
|
| 129 | $row = $result; |
|
| 130 | } |
|
| 131 | } |
|
| 132 | return $row; |
|
| 133 | }); |
|
| 134 | } |
|
| 135 | ||
| 136 | /** |
|
| 137 | * @param string $className |
|
| @@ 194-213 (lines=20) @@ | ||
| 191 | * @return string[] |
|
| 192 | * @throws \Exception |
|
| 193 | */ |
|
| 194 | public function fetchObject($className, Closure $callback = null) { |
|
| 195 | return $this->createTempStatement(function (QueryStatement $statement) use ($className, $callback) { |
|
| 196 | $statement->setFetchMode(PDO::FETCH_CLASS, $className); |
|
| 197 | $row = $statement->fetch(); |
|
| 198 | if(!is_array($row)) { |
|
| 199 | return []; |
|
| 200 | } |
|
| 201 | if($this->preserveTypes) { |
|
| 202 | $columnDefinitions = FieldTypeProvider::getFieldTypes($statement); |
|
| 203 | $row = FieldValueConverter::convertValues($row, $columnDefinitions); |
|
| 204 | } |
|
| 205 | if($callback !== null) { |
|
| 206 | $result = $callback($row); |
|
| 207 | if($result !== null) { |
|
| 208 | $row = $result; |
|
| 209 | } |
|
| 210 | } |
|
| 211 | return $row; |
|
| 212 | }); |
|
| 213 | } |
|
| 214 | ||
| 215 | /** |
|
| 216 | * @param bool $treatValueAsArray |
|