ArticleDao.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace internship\model;
  3. use n2n\persistence\orm\EntityManager;
  4. use internship\bo\Article;
  5. use n2n\context\attribute\RequestScoped;
  6. use n2n\context\attribute\Inject;
  7. /**
  8. * Benutze diese Klasse um Datenbankabfragen auszuführen.
  9. * Du findest alle Informationen zu Datenbankabfragen in der Doku:
  10. * https://dev.n2n.rocks/de/n2n/docs/persistence-orm#entitymanager
  11. */
  12. #[RequestScoped]
  13. class ArticleDao {
  14. #[Inject]
  15. private EntityManager $em;
  16. /**
  17. * Gebe alle {@see Article}-Objekte, nach id absteigend sortiert, zurück.
  18. *
  19. * @return Article[]
  20. */
  21. function getArticles(): array {
  22. $criteria = $this->em->createSimpleCriteria(Article::getClass(), array(), array('id' => 'DESC'));
  23. return $criteria->toQuery()->fetchArray();
  24. }
  25. /**
  26. * Gebe alle {@see Article} zurück, welche dem übergebenen Kategorienamen entsprechen.
  27. *
  28. * @return Article[]
  29. */
  30. function getArticlesByCategoryName(string $categoryName): array {
  31. return $this->em->createSimpleCriteria(Article::class, ['categoryName' => $categoryName])
  32. ->toQuery()->fetchArray();
  33. //return $this->em->createNqlCriteria('SELECT a FROM Article a WHERE a.categoryName = :categoryName', array('categoryName' => $categoryName))
  34. // ->toQuery()->fetchArray();
  35. // return $this->em->find(Article::getClass(), $categoryName);
  36. }
  37. /**
  38. * Gebe den {@see Article} mit der enstprechenden ID zurück.
  39. *
  40. * @param int $id
  41. * @return Article|null
  42. */
  43. function getArticleById(int $id): ?Article {
  44. return $this->em->find(Article::getClass(), $id);
  45. }
  46. function saveArticle(Article $newArticle): void {
  47. $this->em->persist($newArticle);
  48. }
  49. function removeArticle(int $articleId): void {
  50. $article = $this->getArticleById($articleId);
  51. $this->em->remove($article);
  52. }
  53. }