| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace internship\model;
- use n2n\persistence\orm\EntityManager;
- use internship\bo\Article;
- use n2n\context\attribute\RequestScoped;
- /**
- * Benutze diese Klasse um Datenbankabfragen auszuführen.
- * Du findest alle Informationen zu Datenbankabfragen in der Doku:
- * https://dev.n2n.rocks/de/n2n/docs/persistence-orm#entitymanager
- */
- #[RequestScoped]
- class ArticleDao {
- private EntityManager $em;
- private function _init(EntityManager $em): void {
- $this->em = $em;
- }
- /**
- * Gebe alle {@see Article}-Objekte, nach id absteigend sortiert, zurück.
- *
- * @return Article[]
- */
- function getArticles(): array {
- $criteria = $this->em->createNqlCriteria("SELECT a FROM Article a");
- return $criteria->toQuery()->fetchArray();
- }
- /**
- * Gebe alle {@see Article} zurück, welche dem übergebenen Kategorienamen entsprechen.
- *
- * @return Article[]
- */
- function getArticlesByCategoryName(string $categoryName): array {
- return $this->em->createSimpleCriteria(Article::getClass(), ['categoryName' => $categoryName])
- ->toQuery()->fetchArray();
- //
- // $criteria = $this->em->createCriteria();
- // $criteria->select('a')
- // ->from(Article::getClass(), 'a')
- // ->where()->match('a.categoryName', '=', $categoryName);
- // return $criteria->toQuery()->fetchArray();
- // $criteria = $this->em->createNqlCriteria(
- // "SELECT a FROM Article a WHERE a.category_name = :category_name",
- // array("category_name" => $categoryName));
- // return $criteria->toQuery()->fetchArray();
- }
- /**
- * Gebe den {@see Article} mit der enstprechenden ID zurück.
- *
- * @param int $id
- * @return Article|null
- */
- function getArticleById(int $id): ?Article {
- return $this->em->find(Article::getClass(), $id);
- }
- /**
- * Speichere den {@see Article}.
- *
- * @param Article $article
- * @return null
- */
- function saveArticle(Article $article){
- $this->em->persist($article);
- }
- /**
- * Entferne den {@see Article} mit der entsprechenden Id.
- *
- * @param int $id
- * @return void
- */
- function removeArticle(int $id){
- $articleToBeRemoved = $this->em->find(Article::class, $id);
- $this->em->remove($articleToBeRemoved);
- }
- }
|