@@ 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 |