Laravel создать одно правило с запросом на основе нескольких полей из формы - PullRequest
0 голосов
/ 23 апреля 2019

Я создаю простую систему бронирования, и мне нужно проверить, доступен ли автомобиль. Я собираюсь создать собственное правило, но у меня есть следующие проблемы:
1. Мне нужно передать аргумент нескольким значениям из формы в метод pass: date, time_form, time_to, car_id. Первый и второй вопрос волнуются, потому что
2. Я не уверен, как и где вызвать этот метод в контроллере, если мне придется использовать его в нескольких входах.
3. Полагаю, мне нужно создать запрос, чтобы проверить, существует ли машина. В чистом php я создаю запрос, но я не уверен, что мой стиль запроса "laravel" в боге:

$result = Reservation::where(function ($query) use ($request) {
            $query->whereBetween('time_from', [$request->input('time_from), $request->input('time_to')])
                ->orWhereBetween('time_to', [$request->input('time_from'), $request->input('time_to')]);
               })->where(function ($query) use ($request) {$query
            ->whereBetween($request->input('time_from'), ['time_from','time_to'])
            ->orWhereBetween($request->input('time_to'), ['time_from','time_to']);
               })
            ->where('date',$request->input('date'))
            ->where('car_id',$request->input('car_id'));

и чистый php

$sql1 = "select * from reservation 
        where ('$time_from' BETWEEN time_from AND time_to or '$time_to' BETWEEN time_from AND time_to) 
        and (time_from BETWEEN '$time_from' AND '$time_to' or time_to BETWEEN '$time_from' AND '$time_to')              
        and car_id = '$car_id'";

Я новичок в Laravel, поэтому я прошу вас понять. Я прошу несколько советов. Может быть, это лучший способ сделать это.

1 Ответ

0 голосов
/ 24 апреля 2019

Вы можете попробовать код ниже:

$result = Reservation::query()
    ->where(function ($query) use ($request) {
        return $query
            ->whereBetween('time_from', [$request->input('time_from'), $request->input('time_to')])
            ->orWhereBetween('time_to', [$request->input('time_from'), $request->input('time_to')]);
    })
    ->where(function ($query) use ($request) {
        return $query
            ->whereRaw($request->input('time_from') . ' BETWEEN time_from AND time_to')
            ->orWhereRaw($request->input('time_to') . ' BETWEEN time_from AND time_to');
    })
    ->where('date', $request->input('date'))
    ->where('car_id', $request->input('car_id'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...