ArticleDao.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. use n2n\web\http\BadRequestException;
  8. use n2n\web\http\controller\ParamBody;
  9. use n2n\web\http\PageNotFoundException;
  10. /**
  11. * Benutze diese Klasse um Datenbankabfragen auszuführen.
  12. * Du findest alle Informationen zu Datenbankabfragen in der Doku:
  13. * https://dev.n2n.rocks/de/n2n/docs/persistence-orm#entitymanager
  14. */
  15. #[RequestScoped]
  16. class ArticleDao {
  17. private EntityManager $em;
  18. private Pdo $pdo;
  19. private function _init(EntityManager $em): void {
  20. $this->em = $em;
  21. $this->pdo = $em->getPdo();
  22. }
  23. /**
  24. * Gebe alle {@see Article}-Objekte, nach id absteigend sortiert, zurück.
  25. *
  26. * @return Article[]
  27. */
  28. function getArticles(): array {
  29. $criteria = $this->em->createSimpleCriteria(Article::getClass(), order: ['id' => 'DESC']);
  30. return $criteria->toQuery()->fetchArray();
  31. }
  32. /**
  33. * Gebe alle {@see Article} zurück, welche dem übergebenen Kategorienamen entsprechen.
  34. *
  35. * @return array
  36. */
  37. function getArticlesByCategoryName(string $categoryName): array {
  38. $criteria = $this->em->createSimpleCriteria(Article::getClass(), ['categoryName' => $categoryName ], order: ['id' => 'DESC']);
  39. return $criteria->toQuery()->fetchArray();
  40. }
  41. /**
  42. * Gebe den {@see Article} mit der enstprechenden ID zurück.
  43. *
  44. * @param int $id
  45. * @return Article|null
  46. */
  47. function getArticleById(mixed $id): ?Article {
  48. return $this->em->find(Article::getClass(), $id);
  49. $criteria = $this->em->createSimpleCriteria(Article::getClass(),['id'=> $id]);
  50. return $criteria->toQuery()->fetchSingle();
  51. }
  52. function saveArticle(Article $article) {
  53. $this->em->persist($article);
  54. }
  55. function removeArticle(int $id ) {
  56. $article = $this->em->find(Article::getClass(), $id);
  57. $this->em->remove($article);
  58. }
  59. //function getArticleRowById(int $id): array {
  60. // $this->pdo->prepare('SELECT...'),
  61. //}
  62. }