День добрый.
Нужно организовать поиск билетов для авиа перелётов. В базе данных создал несколько тестовых перелётов с датами вылета 16.04.2017 и возвращения 29.04.2017, по маршруту Москва-Стокгольм(четыре билета всего).
Если ищут билет в оба конца:
Задана дата вылета и дата возвращения. Выводить билеты парами, туда и обратно. Если на одну из дат нет билета, то ничего не выводить.
Если ищут билет в один конец:
Тут всё просто, показать билет на дату вылета.
В поисковой модели сделал такие условия поиска:
$query->andWhere([
'status' => Flights::STATUS_ACTIVE,
'date_start' => [strtotime($this->date_from . ' 00:00'), strtotime($this->date_to . ' 00:00')],
'city_start_id' => [$this->city_from, $this->city_to]
]);
Что я ожидаю:
При выборе дат 16.04.2017 и 29.04.2017 и выборе городов Москва-Стокгольм получить все билеты на эти даты.
Что получаю:
Если я выбираю указанные даты и города, то в итоге у меня есть в результате четыре билета.
Если я дату возвращения или вылета меняю на любую другую, а в базе нет билетов на эту дату, то я получаю два билета или туда или обратно. А нужно чтобы ничего не выводилось, просто сообщение, что билетов на указанные даты не найдено.
Такая же ситуация и с городами вылета и возвращения. Если я выбираю город, билетов в который нет, то я получаю или билет туда или билет обратно на указанные даты, а нужно, чтобы ничего не выводилось, только сообщение, что билетов не найдено.
Как мне правильно составить условие поиска?