Я использую тонкий фреймворк с php и eloquent в качестве ORM для создания системы повестки дня и postgresql в базе данных.
У меня есть мои столы:
таблица пользователей:
users
-id (uuid)
-email (varchar)
-password (varchar)
сводная таблица:
meeting_user
-user_id (uuid)
-meeting_id (uuid)
стол для совещаний:
meetings
-id (uuid)
-meeting_date (date)
-start_at (time)
-finish_at (time)
Я делаю запрос, чтобы проверить доступность пользователя, отправляющего дату, время начала и время окончания, и возвращает true или false, если у вас есть какая-либо запись за этот период.
у меня есть это:
select count(*) from meetings
inner join meeting_user
on meetings.id = meeting_user.meeting_id
where meeting_user.user_id = '0e804e9d-a3e4-42bc-8877-f8b2f74c27e8'
and (meetings.meeting_date = '2018-11-02'::date
and '13:00:00'::time
between meetings.start_at::time and meetings.finish_at::time
or
'14:05:00'::time
between meetings.start_at::time and meetings.finish_at::time
)
и работает отлично, но как я могу сделать это с помощью eloquent? Я пытался, но не работает, я делаю это:
return EloquentUser::find($userId)
->meetings()
->where('meeting_date', $meetingDate)
->whereBetween('start_at', array($startAt, $finishAt))
->orWhereBetween('finish_at', array(strtotime($startAt), strtotime($finishAt)))
->exists();
Может кто-нибудь помочь мне, пожалуйста.