slo_nik
@slo_nik

Поиск билетов, как правильно составить условие?

День добрый.
Нужно организовать поиск билетов для авиа перелётов. В базе данных создал несколько тестовых перелётов с датами вылета 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 и выборе городов Москва-Стокгольм получить все билеты на эти даты.
Что получаю:
Если я выбираю указанные даты и города, то в итоге у меня есть в результате четыре билета.
Если я дату возвращения или вылета меняю на любую другую, а в базе нет билетов на эту дату, то я получаю два билета или туда или обратно. А нужно чтобы ничего не выводилось, просто сообщение, что билетов на указанные даты не найдено.
Такая же ситуация и с городами вылета и возвращения. Если я выбираю город, билетов в который нет, то я получаю или билет туда или билет обратно на указанные даты, а нужно, чтобы ничего не выводилось, только сообщение, что билетов не найдено.
Как мне правильно составить условие поиска?
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Я так понимаю надо делать 2 выборки и union
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы