‪TYPO3CMS  11.5
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 
24 
32 {
35 
39  protected ‪$numberOfResults;
40 
41  protected ?‪QueryInterface ‪$query = null;
42 
46  protected ‪$queryResult;
47 
48  public function ‪__construct(
51  ) {
52  $this->dataMapper = ‪$dataMapper;
53  $this->persistenceManager = ‪$persistenceManager;
54  }
55 
56  public function ‪setQuery(‪QueryInterface ‪$query): void
57  {
58  $this->query = ‪$query;
59  $this->dataMapper->setQuery(‪$query);
60  }
61 
65  protected function ‪initialize()
66  {
67  if (!is_array($this->queryResult)) {
68  $this->queryResult = $this->dataMapper->map($this->query->getType(), $this->persistenceManager->getObjectDataByQuery($this->query));
69  }
70  }
71 
77  public function ‪getQuery()
78  {
79  return clone ‪$this->query;
80  }
81 
87  public function ‪getFirst()
88  {
89  if (is_array($this->queryResult)) {
91  reset(‪$queryResult);
92  } else {
93  ‪$query = $this->‪getQuery();
94  $query->‪setLimit(1);
95  ‪$queryResult = $this->dataMapper->map(‪$query->‪getType(), $this->persistenceManager->getObjectDataByQuery(‪$query));
96  }
97  $firstResult = ‪current(‪$queryResult);
98  if ($firstResult === false) {
99  $firstResult = null;
100  }
101  return $firstResult;
102  }
103 
110  #[\ReturnTypeWillChange]
111  public function ‪count()
112  {
113  if ($this->numberOfResults === null) {
114  if (is_array($this->queryResult)) {
115  $this->numberOfResults = ‪count($this->queryResult);
116  } else {
117  $this->numberOfResults = $this->persistenceManager->getObjectCountByQuery($this->query);
118  }
119  }
121  }
122 
128  public function ‪toArray()
129  {
130  $this->‪initialize();
131  return iterator_to_array($this);
132  }
133 
144  #[\ReturnTypeWillChange]
145  public function ‪offsetExists($offset)
146  {
147  $this->‪initialize();
148  return isset($this->queryResult[$offset]);
149  }
150 
158  #[\ReturnTypeWillChange]
159  public function ‪offsetGet($offset)
160  {
161  $this->‪initialize();
162  return $this->queryResult[$offset] ?? null;
163  }
164 
174  #[\ReturnTypeWillChange]
175  public function ‪offsetSet($offset, $value)
176  {
177  $this->‪initialize();
178  $this->numberOfResults = null;
179  $this->queryResult[$offset] = $value;
180  }
181 
190  #[\ReturnTypeWillChange]
191  public function ‪offsetUnset($offset)
192  {
193  $this->‪initialize();
194  $this->numberOfResults = null;
195  unset($this->queryResult[$offset]);
196  }
197 
203  #[\ReturnTypeWillChange]
204  public function ‪current()
205  {
206  $this->‪initialize();
207  return ‪current($this->queryResult);
208  }
209 
215  #[\ReturnTypeWillChange]
216  public function ‪key()
217  {
218  $this->‪initialize();
219  return ‪key($this->queryResult);
220  }
221 
226  #[\ReturnTypeWillChange]
227  public function ‪next()
228  {
229  $this->‪initialize();
230  ‪next($this->queryResult);
231  }
232 
237  #[\ReturnTypeWillChange]
238  public function ‪rewind()
239  {
240  $this->‪initialize();
241  reset($this->queryResult);
242  }
243 
249  #[\ReturnTypeWillChange]
250  public function ‪valid()
251  {
252  $this->‪initialize();
253  return ‪current($this->queryResult) !== false;
254  }
255 
261  public function ‪__wakeup()
262  {
263  $this->persistenceManager = GeneralUtility::makeInstance(PersistenceManagerInterface::class);
264  $this->dataMapper = GeneralUtility::makeInstance(DataMapper::class);
265  }
266 
271  public function ‪__sleep()
272  {
273  return ['query'];
274  }
275 }
‪TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
Definition: PersistenceManagerInterface.php:22
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetGet
‪mixed offsetGet($offset)
Definition: QueryResult.php:157
‪TYPO3\CMS\Extbase\Persistence\QueryInterface
Definition: QueryInterface.php:29
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\getFirst
‪object getFirst()
Definition: QueryResult.php:85
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetSet
‪offsetSet($offset, $value)
Definition: QueryResult.php:173
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper
Definition: DataMapper.php:51
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetExists
‪bool offsetExists($offset)
Definition: QueryResult.php:143
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\count
‪int count()
Definition: QueryResult.php:109
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$query
‪QueryInterface $query
Definition: QueryResult.php:40
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\key
‪mixed key()
Definition: QueryResult.php:214
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\__wakeup
‪__wakeup()
Definition: QueryResult.php:259
‪TYPO3\CMS\Extbase\Persistence\ForwardCompatibleQueryResultInterface
Definition: ForwardCompatibleQueryResultInterface.php:25
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$persistenceManager
‪PersistenceManagerInterface $persistenceManager
Definition: QueryResult.php:34
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\next
‪next()
Definition: QueryResult.php:225
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\rewind
‪rewind()
Definition: QueryResult.php:236
‪TYPO3\CMS\Extbase\Persistence\QueryResultInterface
Definition: QueryResultInterface.php:22
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\setQuery
‪setQuery(QueryInterface $query)
Definition: QueryResult.php:54
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\valid
‪bool valid()
Definition: QueryResult.php:248
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\__construct
‪__construct(DataMapper $dataMapper, PersistenceManagerInterface $persistenceManager)
Definition: QueryResult.php:46
‪TYPO3\CMS\Extbase\Persistence\Generic
Definition: Backend.php:16
‪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\current
‪mixed current()
Definition: QueryResult.php:202
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\$queryResult
‪array null $queryResult
Definition: QueryResult.php:44
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\initialize
‪initialize()
Definition: QueryResult.php:63
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\offsetUnset
‪offsetUnset($offset)
Definition: QueryResult.php:189
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪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:75
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\toArray
‪array toArray()
Definition: QueryResult.php:126
‪TYPO3\CMS\Extbase\Persistence\Generic\QueryResult\__sleep
‪array __sleep()
Definition: QueryResult.php:269