ArticleDao.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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());
  24. return $criteria->toQuery()->fetchArray();
  25. /*return $this->em->createNqlCriteria('SELECT a FROM Article a WHERE a.category = :category ORDER BY title ASC')
  26. ->toQuery()->fetchArray();*/
  27. }
  28. /**
  29. * Gebe alle {@see Article} zurück, welche dem übergebenen Kategorienamen entsprechen.
  30. *
  31. * @return Article[]
  32. */
  33. function getArticlesByCategoryName(string $categoryName): array {
  34. return $this->em->createSimpleCriteria(Article::class, ['categoryName' => $categoryName])
  35. ->toQuery()->fetchArray();
  36. //return $this->em->createNqlCriteria('SELECT a FROM Article a WHERE a.categoryName = :categoryName', array('categoryName' => $categoryName))
  37. // ->toQuery()->fetchArray();
  38. // return $this->em->find(Article::getClass(), $categoryName);
  39. }
  40. /**
  41. * Gebe den {@see Article} mit der enstprechenden ID zurück.
  42. *
  43. * @param int $id
  44. * @return Article|null
  45. */
  46. function getArticleById(int $id): ?Article {
  47. return $this->em->find(Article::getClass(), $id);
  48. }
  49. function saveArticle(Article $newArticle) {
  50. // $tx = $this->tm->createTransaction();
  51. $this->em->persist($newArticle);
  52. // $tx->commit();
  53. }
  54. function removeArticle(int $articleId): void {
  55. $article = $this->getArticleById($articleId);
  56. $this->em->remove($article);
  57. }
  58. }