ArticleDao.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace internship\model;
  3. use n2n\persistence\orm\EntityManager;
  4. use internship\bo\Article;
  5. use n2n\context\attribute\RequestScoped;
  6. /**
  7. * Benutze diese Klasse um Datenbankabfragen auszuführen.
  8. * Du findest alle Informationen zu Datenbankabfragen in der Doku:
  9. * https://dev.n2n.rocks/de/n2n/docs/persistence-orm#entitymanager
  10. */
  11. #[RequestScoped]
  12. class ArticleDao {
  13. private EntityManager $em;
  14. private function _init(EntityManager $em): void {
  15. $this->em = $em;
  16. }
  17. /**
  18. * Gebe alle {@see Article}-Objekte, nach id absteigend sortiert, zurück.
  19. *
  20. * @return Article[]
  21. */
  22. function getArticles(): array {
  23. $criteria = $this->em->createSimpleCriteria(Article::getClass(), null,
  24. array('id' => 'DESC'));
  25. return $criteria->toQuery()->fetchArray();
  26. }
  27. /**
  28. * Gebe alle {@see Article} zurück, welche dem übergebenen Kategorienamen entsprechen.
  29. *
  30. * @return array
  31. */
  32. function getArticlesByCategoryName(string $categoryName): array {
  33. $criteria = $this->em->createSimpleCriteria(Article::getClass(), ['categoryName' => $categoryName],
  34. ['id' => 'DESC']);
  35. return $criteria->toQuery()->fetchArray();
  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 $articleObject) {
  47. $this->em->persist($articleObject);
  48. }
  49. function removeArticle(Article $articleObject) {
  50. $this->em->remove($articleObject);
  51. }
  52. }