ArticleDao.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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\persistence\Pdo;
  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. private EntityManager $em;
  15. private Pdo $pdo;
  16. private function _init(EntityManager $em): void {
  17. $this->em = $em;
  18. $this->pdo = $em->getPdo();
  19. }
  20. /**
  21. * Gebe alle {@see Article}-Objekte, nach id absteigend sortiert, zurück.
  22. *
  23. * @return Article[]
  24. */
  25. function getArticles(): array {
  26. $criteria = $this->em->createSimpleCriteria(Article::getClass());
  27. return $criteria->toQuery()->fetchArray();
  28. }
  29. /**
  30. * Gebe alle {@see Article} zurück, welche dem übergebenen Kategorienamen entsprechen.
  31. *
  32. * @return array
  33. */
  34. function getArticlesByCategoryName(string $categoryName): array {
  35. $criteria = $this->em->createSimpleCriteria(Article::getClass(), ['categoryName' => $categoryName ]);
  36. return $criteria->toQuery()->fetchArray();
  37. }
  38. /**
  39. * Gebe den {@see Article} mit der enstprechenden ID zurück.
  40. *
  41. * @param int $id
  42. * @return Article|null
  43. */
  44. function getArticleById(int $id): ?Article {
  45. return $this->em->find(Article::getClass(), $id);
  46. $criteria = $this->em->createSimpleCriteria(Article::getClass(),['id'=> $id]);
  47. return $criteria->toQuery()->fetchSingle();
  48. }
  49. //function getArticleRowById(int $id): array {
  50. // $this->pdo->prepare('SELECT...'),
  51. //}
  52. }