Как использовать условие для отношения один ко многим в Laravel 5.4 - PullRequest
0 голосов
/ 28 августа 2018

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

Вот мой код:

$ot_start = $request->ot_start;
$ot_end = $request->ot_end;
$ot_list = OTMain::with(['otmain_many_otline'=>function($query){
        $query ->where('time_from', '>=', date('d/M/Y H:i:s', strtotime($ot_start . ' 00:00:00.000')))
            ->where('time_from', '<=', date('d/M/Y H:i:s', strtotime($ot_end .' 23:59:59.000')));
        }])->get();

Печать экрана: enter image description here

Я не знаю, почему $ ot_start и $ ot_end получают ошибку.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Если вы используете замыкания (анонимные функции), вам нужно передать переменные на use. Например:

$ot_start = $request->ot_start;
$ot_end = $request->lot_end;
$ot_list = OTMain::with(['otmain_many_otline'=>function($query) use($ot_start,$ot_end){
    $query ->where('time_from', '>=', date('d/M/Y H:i:s', strtotime($ot_start . ' 00:00:00.000')))
        ->where('time_from', '<=', date('d/M/Y H:i:s', strtotime($ot_end .' 23:59:59.000')));
    }])->get();
0 голосов
/ 28 августа 2018

Анонимная функция function($query) ничего не знает о $ot_start, $ot_end. Вот почему phpstorm помечает эти переменные, поскольку они не определены в области видимости функции.

Вам нужно явно передать их с помощью use word:

OTMain::with(['otmain_many_otline'=>function($query) use ($ot_start, $ot_end) {

Теперь эти переменные доступны в функции.

0 голосов
/ 28 августа 2018

Добавить использование ():

 $ot_list = OTMain::with(['otmain_many_otline'=>function($query) use (ot_start , ot_end ){
                         $query ->where('time_from', '>=', date('d/M/Y H:i:s', strtotime($ot_start . ' 00:00:00.000')))
                                 ->where('time_from', '<=', date('d/M/Y H:i:s', strtotime($ot_end .' 23:59:59.000')));
                         }])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...