!!! Как найти даты "извне" в запросе? Help!

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
myks1992@mail.ru
Сообщения: 22
Зарегистрирован: 2017.11.15, 23:54

!!! Как найти даты "извне" в запросе? Help!

Сообщение myks1992@mail.ru » 2018.10.13, 00:20

Всем привет!Я уже задавал вопрос на toster https://toster.ru/q/570168, но не смог найти решения... Помогите! Есть три таблицы: appointment, profile, event (назначения, профиль, мероприятия) во вложении...


Мероприятие 1 проходит в даты 2018-11-24 по 2018-11-25 (продолжительность 2 дня)
Мероприятие 2 проходит в даты 2018-11-25 по 2018-11-25 (продолжительность 1 день)


Мне нужно проверить на существующие назначения пользователя в даты проведения события в таблице appointment. Если он уже судит - выдаем ошибку "Судья уже имеет назначение в эти даты!"

Я делаю такой запрос:

Код: Выделить всё

$appointmentsInDates = Appointment::find()
                ->joinWith(['event', 'profile'])
                ->andWhere([Profile::tableName() . '.user_id' => $model->certification->user_id])
                ->andWhere(['!=', Event::tableName() . '.id', $model->event_id])
                ->andWhere(['>=', Event::tableName() . '.date_from', '2018-11-24'])
                ->andWhere(['<=', Event::tableName() . '.date_to', '2018-11-25'])
                ->groupBy(Event::tableName() . '.id')
                ->exists();
В итоге, по данному запросу при назначении на Мероприятие 2 (1 день) не находит ни одного назначения в диапазон дат Мероприятия 1 (2 дня). Однако если назначать на Мероприятие 1 с большим диапазонам дат, чем у мероприятия, то тогда находит все назначения.

Как мне сделать запрос, чтобы он учитывал все даты "извне"?

andku83
Сообщения: 808
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: !!! Как найти даты "извне" в запросе? Help!

Сообщение andku83 » 2018.10.14, 00:14

Поле date_to у вас точно в том формате с чем вы сравниваете?
Может там datetime?

Код: Выделить всё

'2018-11-25' < '2018-11-25 00:00:00'

myks1992@mail.ru
Сообщения: 22
Зарегистрирован: 2017.11.15, 23:54

Re: !!! Как найти даты "извне" в запросе? Help!

Сообщение myks1992@mail.ru » 2018.10.14, 00:28

andku83 писал(а):
2018.10.14, 00:14
Поле date_to у вас точно в том формате с чем вы сравниваете?
Может там datetime?

Код: Выделить всё

'2018-11-25' < '2018-11-25 00:00:00'
Точно дата! Пробовал переводить даже в строку datetime int (11)

Ответить