CategoryDao.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace internship\model;
  3. use internship\bo\Category;
  4. use n2n\persistence\orm\EntityManager;
  5. use internship\bo\Article;
  6. use n2n\context\attribute\RequestScoped;
  7. #[RequestScoped]
  8. class CategoryDao {
  9. private EntityManager $em;
  10. private function _init(EntityManager $em): void {
  11. $this->em = $em;
  12. }
  13. /**
  14. * Gebe alle {@see Category}-Objekte, nach id aufsteigend sortiert, zurück.
  15. *
  16. * @return Category[]
  17. */
  18. function getCategories(): array {
  19. $criteria = $this->em->createNqlCriteria(
  20. 'SELECT c FROM Category c ORDER BY c.id DESC');
  21. return $criteria->toQuery()->fetchArray();
  22. }
  23. /**
  24. * Gebe die {@see Category} mit der enstprechenden ID zurück.
  25. *
  26. * @param int $id
  27. * @return Category|null
  28. */
  29. function getCategoryById(int $id): ?Category {
  30. return $this->em->find(Category::getClass(),$id);
  31. }
  32. /**
  33. * Gebe alle {@see Category} zurück, welche dem übergebenen Kategorienamen entsprechen.
  34. *
  35. * @param string $categoryName
  36. * @return array
  37. */
  38. function getCategoryByCategoryName(string $categoryName): array {
  39. $criteria = $this->em->createSimpleCriteria(Category::getClass(),
  40. ['category_name' => $categoryName]);
  41. return $criteria->toQuery()->fetchArray();
  42. }
  43. /**
  44. * Speichere die {@see Category} in der Datenbank.
  45. *
  46. * @param Category $category
  47. * @return void
  48. */
  49. function saveCategory(Category $category): void {
  50. $this->em->persist($category);
  51. }
  52. /**
  53. * Lösche die {@see Category} aus der Datenbank.
  54. *
  55. * @param Category $category
  56. * @return void
  57. */
  58. function removeCategory(Category $category): void {
  59. $this->em->remove($category);
  60. }
  61. }