‪TYPO3CMS  ‪main
QueryResult.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
23 
32 {
35 
39  protected ‪$numberOfResults;
40 
44  protected ?‪QueryInterface ‪$query = null;
45 
50  protected ‪$queryResult;
51 
52  public function ‪__construct(
55  ) {
56  $this->dataMapper = ‪$dataMapper;
57  $this->persistenceManager = ‪$persistenceManager;
58  }
59 
63  public function ‪setQuery(‪QueryInterface ‪$query): void
64  {
65  $this->query = ‪$query;
66  $this->dataMapper->setQuery(‪$query);
67  }
68 
72  protected function ‪initialize()
73  {
74  if (!is_array($this->queryResult)) {
75  $this->queryResult = $this->dataMapper->map($this->query->getType(), $this->persistenceManager->getObjectDataByQuery($this->query));
76  }
77  }
78 
85  public function ‪getQuery()
86  {
87  return clone ‪$this->query;
88  }
89 
96  public function ‪getFirst()
97  {
98  if (is_array($this->queryResult)) {
100  reset(‪$queryResult);
101  } else {
102  ‪$query = $this->‪getQuery();
103  $query->‪setLimit(1);
104  ‪$queryResult = $this->dataMapper->map(‪$query->‪getType(), $this->persistenceManager->getObjectDataByQuery(‪$query));
105  }
106  $firstResult = ‪current(‪$queryResult);
107  if ($firstResult === false) {
108  $firstResult = null;
109  }
110  return $firstResult;
111  }
112 
118  public function ‪count(): int
119  {
120  if ($this->numberOfResults === null) {
121  if (is_array($this->queryResult)) {
122  $this->numberOfResults = ‪count($this->queryResult);
123  } else {
124  $this->numberOfResults = $this->persistenceManager->getObjectCountByQuery($this->query);
125  }
126  }
128  }
129 
136  public function ‪toArray()
137  {
138  $this->‪initialize();
139  return iterator_to_array($this);
140  }
141 
148  public function ‪offsetExists($offset): bool
149  {
150  $this->‪initialize();
151  return isset($this->queryResult[$offset]);
152  }
153 
158  public function ‪offsetGet($offset): mixed
159  {
160  $this->‪initialize();
161  return $this->queryResult[$offset] ?? null;
162  }
163 
171  public function ‪offsetSet($offset, $value): void
172  {
173  $this->‪initialize();
174  $this->numberOfResults = null;
175  $this->queryResult[$offset] = $value;
176  }
177 
183  public function ‪offsetUnset($offset): void
184  {
185  $this->‪initialize();
186  $this->numberOfResults = null;
187  unset($this->queryResult[$offset]);
188  }
189 
195  public function ‪current(): mixed
196  {
197  $this->‪initialize();
198  return ‪current($this->queryResult);
199  }
200 
206  public function ‪key(): mixed
207  {
208  $this->‪initialize();
209  return ‪key($this->queryResult);
210  }
211 
215  public function ‪next(): void
216  {
217  $this->‪initialize();
218  ‪next($this->queryResult);
219  }
220 
224  public function ‪rewind(): void
225  {
226  $this->‪initialize();
227  reset($this->queryResult);
228  }
229 
233  public function ‪valid(): bool
234  {
235  $this->‪initialize();
236  return ‪current($this->queryResult) !== false;
237  }
238 
244  public function ‪__wakeup()
245  {
246  $this->persistenceManager = GeneralUtility::makeInstance(PersistenceManagerInterface::class);
247  $this->dataMapper = GeneralUtility::makeInstance(DataMapper::class);
248  }
249 
254  public function ‪__sleep()
255  {
256  return ['query'];
257  }
258 }
‪TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
Definition: PersistenceManagerInterface.php:24
‪TYPO3\CMS\Extbase\Persistence\QueryInterface
Definition: QueryInterface.php:30
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\getFirst
‪object getFirst()
Definition: QueryResult.php:94
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetExists
‪offsetExists($offset)
Definition: QueryResult.php:146
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetSet
‪offsetSet($offset, $value)
Definition: QueryResult.php:169
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper
Definition: DataMapper.php:58
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\count
‪int count()
Definition: QueryResult.php:116
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$query
‪QueryInterface $query
Definition: QueryResult.php:43
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\key
‪mixed key()
Definition: QueryResult.php:204
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\__wakeup
‪__wakeup()
Definition: QueryResult.php:242
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$persistenceManager
‪PersistenceManagerInterface $persistenceManager
Definition: QueryResult.php:34
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\next
‪next()
Definition: QueryResult.php:213
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\rewind
‪rewind()
Definition: QueryResult.php:222
‪TYPO3\CMS\Extbase\Persistence\QueryResultInterface
Definition: QueryResultInterface.php:26
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\setQuery
‪setQuery(QueryInterface $query)
Definition: QueryResult.php:61
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\__construct
‪__construct(DataMapper $dataMapper, PersistenceManagerInterface $persistenceManager)
Definition: QueryResult.php:50
‪TYPO3\CMS\Extbase\Persistence\Generic
Definition: Backend.php:18
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$numberOfResults
‪int null $numberOfResults
Definition: QueryResult.php:38
‪TYPO3\CMS\Extbase\Persistence\QueryInterface\setLimit
‪TYPO3 CMS Extbase Persistence QueryInterface setLimit($limit)
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult
Definition: QueryResult.php:32
‪TYPO3\CMS\Extbase\Persistence\QueryInterface\getType
‪string getType()
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetGet
‪TValue null offsetGet($offset)
Definition: QueryResult.php:156
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\valid
‪valid()
Definition: QueryResult.php:231
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\current
‪mixed current()
Definition: QueryResult.php:193
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$queryResult
‪array null $queryResult
Definition: QueryResult.php:48
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\initialize
‪initialize()
Definition: QueryResult.php:70
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetUnset
‪offsetUnset($offset)
Definition: QueryResult.php:181
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$dataMapper
‪DataMapper $dataMapper
Definition: QueryResult.php:33
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\getQuery
‪QueryInterface getQuery()
Definition: QueryResult.php:83
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\toArray
‪array toArray()
Definition: QueryResult.php:134
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\__sleep
‪array __sleep()
Definition: QueryResult.php:252