ArticleDao.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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->createNqlCriteria("SELECT a FROM Article a");
  24. return $criteria->toQuery()->fetchArray();
  25. }
  26. /**
  27. * Gebe alle {@see Article} zurück, welche dem übergebenen Kategorienamen entsprechen.
  28. *
  29. * @return Article[]
  30. */
  31. function getArticlesByCategoryName(string $categoryName): array {
  32. return $this->em->createSimpleCriteria(Article::getClass(), ['categoryName' => $categoryName])
  33. ->toQuery()->fetchArray();
  34. //
  35. // $criteria = $this->em->createCriteria();
  36. // $criteria->select('a')
  37. // ->from(Article::getClass(), 'a')
  38. // ->where()->match('a.categoryName', '=', $categoryName);
  39. // return $criteria->toQuery()->fetchArray();
  40. // $criteria = $this->em->createNqlCriteria(
  41. // "SELECT a FROM Article a WHERE a.category_name = :category_name",
  42. // array("category_name" => $categoryName));
  43. // return $criteria->toQuery()->fetchArray();
  44. }
  45. /**
  46. * Gebe den {@see Article} mit der enstprechenden ID zurück.
  47. *
  48. * @param int $id
  49. * @return Article|null
  50. */
  51. function getArticleById(int $id): ?Article {
  52. return $this->em->find(Article::getClass(), $id);
  53. }
  54. /**
  55. * Speichere den {@see Article}.
  56. *
  57. * @param Article $article
  58. * @return null
  59. */
  60. function saveArticle(Article $article){
  61. $this->em->persist($article);
  62. }
  63. /**
  64. * Entferne den {@see Article} mit der entsprechenden Id.
  65. *
  66. * @param int $id
  67. * @return void
  68. */
  69. function removeArticle(int $id){
  70. $articleToBeRemoved = $this->em->find(Article::class, $id);
  71. $this->em->remove($articleToBeRemoved);
  72. }
  73. }