Доктрина |Между DateTime отношения - PullRequest
0 голосов
/ 31 мая 2018

Я работаю над школьным проектом, где мы создаем сайт для кинотеатра.В администрации вы можете создавать фильмы, а затем вы можете создавать шоу

У меня есть 2 объекта:

Шоу

$id
$name
$movie
...
$date (when the movie starts)

Фильм

$id
$name
...
$shows

Теперь моя проблема, как на реальном кинотеатре, я хочу, чтобы расписание было с четверга по среду.Но я не получаю право запроса возвращать все фильмы в диапазоне дат:

MovieRepository

$qb = $this->createQueryBuilder('movie')
        ->innerJoin('movie.shows', 'shows')
        ->where('shows.date > :thursday')
        ->andWhere('shows.date < :wednesday')
        ->setParameters([
            'thursday' => $thursday,
            'wednesday' => $wednesday
        ]);

    return $qb->getQuery()->getResult();

Запрос просто возвращает фильмы (со всеми их шоу) где 1 или более шоу находятся в диапазоне.

См. здесь (четверг 31.05. и среда 06.06):

, если есть один показ этого фильма в диапазоне дат, всепоказы этого фильма будут показаны enter image description here


Решено это:

Мне нужно было сделать -> выбрать () ивыбрать столы для стендов.

$qb = $this->createQueryBuilder('movie')
        ->innerJoin('movie.shows', 'shows');
        ->select('movie', 'shows')
        ->where('shows.date > :thursday')
        ->andWhere('shows.date < :wednesday')
        ->setParameters([
            'thursday' => $thursday->format('Y-m-d H:i:s'),
            'wednesday' => $wednesday->format('Y-m-d H:i:s')
        ])
        ->orderBy('shows.date', 'ASC')
    ;

1 Ответ

0 голосов
/ 31 мая 2018

попробуйте инвертировать запрос, пожалуйста, так:

$qb = $this->createQueryBuilder('show')
        ->innerJoin('show.movie', 'movie')
        ->where('show.date > :thursday')
        ->andWhere('show.date < :wednesday')
        ->setParameters([
            'thursday' => $thursday,
            'wednesday' => $wednesday
        ]);

    return $qb->getQuery()->getResult();
...