如何在 Laravel 5.4 中为一对多关系使用条件
How to use condition for one to many relationship in Laravel 5.4
我遵循这个 并且它工作得很好,但是当我尝试放置一个变量时它给我语法错误。
这是我的代码:
$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();
打印屏幕:
我不知道为什么 $ot_start 和 $ot_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();
如果您使用闭包(匿名函数),您需要通过 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();
匿名函数function($query)
对$ot_start
、$ot_end
一无所知。这就是 phpstorm 标记这些变量的原因,因为它们在函数范围内未定义。
您需要使用 use
字明确地传递它们:
OTMain::with(['otmain_many_otline'=>function($query) use ($ot_start, $ot_end) {
现在,这些变量在函数中可用。
我遵循这个
这是我的代码:
$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();
打印屏幕:
我不知道为什么 $ot_start 和 $ot_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();
如果您使用闭包(匿名函数),您需要通过 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();
匿名函数function($query)
对$ot_start
、$ot_end
一无所知。这就是 phpstorm 标记这些变量的原因,因为它们在函数范围内未定义。
您需要使用 use
字明确地传递它们:
OTMain::with(['otmain_many_otline'=>function($query) use ($ot_start, $ot_end) {
现在,这些变量在函数中可用。