src/JuridicusBundle/Repository/PdfZeitschriftPRRepository.php line 31

Open in your IDE?
  1. <?php
  2. namespace JF\JuridicusBundle\Repository;
  3. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  4. use Doctrine\ORM\EntityRepository;
  5. use JF\JuridicusBundle\Entity\PdfZeitschriftPR;
  6. use JF\JuridicusBundle\Entity\AboZeitraum;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. /**
  9. * PdfZeitschriftPRRepository
  10. *
  11. * This class was generated by the Doctrine ORM. Add your own custom
  12. * repository methods below.
  13. */
  14. class PdfZeitschriftPRRepository extends ServiceEntityRepository
  15. {
  16. public function __construct(ManagerRegistry $registry)
  17. {
  18. parent::__construct($registry, PdfZeitschriftPR::class);
  19. }
  20. /**
  21. * findArchivSince
  22. *
  23. * @param \DateTime $date
  24. * @return array
  25. */
  26. public function findArchivSince(\DateTime $date)
  27. {
  28. $qb = $this->createQueryBuilder('pdf')
  29. ->where('pdf.released_at < :date')->setParameter('date', $date->format('Y-m-d'))
  30. ->orderBy('pdf.released_at', 'ASC')
  31. ;
  32. $entities = $qb->getQuery()->getResult();
  33. $byYear = array();
  34. foreach ($entities as $entity) {
  35. $byYear[$entity->getReleasedAt()->format('Y')][] = $entity;
  36. }
  37. return $byYear;
  38. }
  39. /**
  40. * @param \DateTime $date
  41. */
  42. public function findThreeBefore(\DateTime $date)
  43. {
  44. $qb = $this->createQueryBuilder('pdf')
  45. ->where('pdf.released_at < :date')
  46. ->setParameter('date', $date->format('Y-m-d'))
  47. ->orderBy('pdf.released_at', 'DESC')
  48. ->setMaxResults(3)
  49. ;
  50. return $qb->getQuery()->getResult();
  51. }
  52. /**
  53. * @param \DateTime $date
  54. * @return PdfZeitschriftPR|null
  55. */
  56. public function findLastBefore(\DateTime $date)
  57. {
  58. $qb = $this->createQueryBuilder('pdf')
  59. ->where('pdf.released_at < :date')
  60. ->setParameter('date', $date->format('Y-m-d'))
  61. ->orderBy('pdf.released_at', 'DESC')
  62. ->setMaxResults(1)
  63. ;
  64. return $qb->getQuery()->getOneOrNullResult();
  65. }
  66. /**
  67. * @return PdfZeitschriftPR|null
  68. */
  69. public function findLast()
  70. {
  71. $qb = $this->createQueryBuilder('pdf')
  72. ->orderBy('pdf.released_at', 'DESC')
  73. ->setMaxResults(1)
  74. ;
  75. return $qb->getQuery()->getOneOrNullResult();
  76. }
  77. /**
  78. * @param \DateTime $monat
  79. * @return PdfZeitschriftPR|null
  80. */
  81. public function findByMonat(\DateTime $monat)
  82. {
  83. $qb = $this->createQueryBuilder('pdf')
  84. ->where('pdf.released_at >= :date1 AND pdf.released_at <= :date2')
  85. ->setParameter('date1', $monat->format('Y-m-01'))
  86. ->setParameter('date2', $monat->format('Y-m-t'))
  87. ->orderBy('pdf.released_at', 'DESC')
  88. ->setMaxResults(1)
  89. ;
  90. return $qb->getQuery()->getOneOrNullResult();
  91. }
  92. /**
  93. *
  94. * @param AboZeitraum $zeitraum
  95. * @return PdfZeitschriftPR[]
  96. */
  97. public function findByAboZeitraum(AboZeitraum $zeitraum)
  98. {
  99. $qb = $this->createQueryBuilder('pdf')
  100. ->where('pdf.released_at >= :date1 AND pdf.released_at <= :date2')
  101. ->setParameter('date1', $zeitraum->getDatumStart()->format('Y-m-d'))
  102. ->setParameter('date2', $zeitraum->getDatumEnde()->format('Y-m-d'))
  103. ->orderBy('pdf.released_at', 'ASC')
  104. ;
  105. $return = array();
  106. foreach ($qb->getQuery()->getResult() as $pdf) {
  107. /* @var $pdf PdfZeitschriftPR */
  108. $return[$pdf->getReleasedAt()->format('m/Y')] = $pdf;
  109. }
  110. return $return;
  111. }
  112. }