createQuery('e') ->addWhere('e.date_from <= ? AND e.date_to >= ?', array(date('Y-m-d 23:59:59', strtotime($date)), $date)); } public function getDaysWithEvents($from, $to) { $days = array(); $date = $from; $max = date("Y-m-d", strtotime('+1 day', strtotime($to))); do { // for($i = 1; $i <= $max; $i++) // { // $date = $year.'-'.$month.'-'.$i; $events = $this->getEventsByDateQuery($date) ->innerJoin('e.Categories c') ->groupBy('c.id') ->orderBy('c.id') ->execute(); if(count($events)) { $day = array('date' => $date); foreach($events as $event) { foreach($event->getCategories() as $category) { $day['categories'][] = $category; } } $days[] = $day; } $date = date("Y-m-d", strtotime('+1 day', strtotime($date))); } while ($date <> $max); return $days; } }