Zum Inhalt springen

Repository - Equals year

Erstellt am 18. Januar 2014 · 1 Antwort · letzte Antwort am 18. Januar 2014

Tags: Extbase, Blog, Frage

FraternitasLux ·

Hallo Community,

ich habe einen Blog mit Typo3 Flow erstellt.
Nun möchte den Benutzern ermöglichen ältere Blogeinträge im Archiv durch die Angabe einer Jahreszahl anzeigen zu lassen.

Dazu möchte ich die Klasse: PostRepository erweitern

	/**
	 * Finds all news written in the given year
	 *
	 * @param \DateTime $year
	 * @return \TYPO3\Flow\Persistence\QueryResultInterface The posts
	 */
	public function findByArchiv($year) {
		$query = $this->createQuery();
		return $query->matching($query->equals(????))
			->setOrderings(array('date' => QueryInterface::ORDER_DESCENDING))
			->execute();
	}

Wie schreibe ich nun eine passende query, die prüft ob 'date' im Jahr $year liegt?

FraternitasLux · · Beste Antwort

Habe es nun so gelöst:

	/**
	 * Finds most recent posts by the specified blog
	 *
	 * @param integer $year
	 * @return \TYPO3\Flow\Persistence\QueryResultInterface The posts
	 */
	public function findByArchiv($year) {
		$lastDayInYear = new \DateTime();
		$lastDayInYear -> setDate($year, 12, 31);
		$firstDayInYear = new \DateTime();
		$firstDayInYear -> setDate($year, 1, 1);
		
		$query = $this->createQuery();
		return $query->matching($query->logicalAnd(array(
				$query->lessThanOrEqual('date', $lastDayInYear),
				$query->greaterThanOrEqual('date', $firstDayInYear)
			)))
			->setOrderings(array('date' => QueryInterface::ORDER_DESCENDING))
			->execute();
	}