【问题标题】:How to use condition for one to many relationship in Laravel 5.4如何在 Laravel 5.4 中为一对多关系使用条件
【发布时间】:2018-08-28 17:42:15
【问题描述】:

我遵循这个link 并且它运行良好,但是当我尝试放置一个变量时它给了我语法错误。

这是我的代码:

$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 会出错。

【问题讨论】:

    标签: php laravel laravel-5.4


    【解决方案1】:

    匿名函数function($query) $ot_start$ot_end一无所知。这就是 phpstorm 标记这些变量的原因,因为它们在函数范围内是未定义的。

    您需要使用use 明确地传递它们:

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

    现在,这些变量在函数中可用。

    【讨论】:

      【解决方案2】:

      添加 use():

       $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();
      

      【讨论】:

        【解决方案3】:

        如果您使用闭包(匿名函数),您需要通过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();
        

        【讨论】:

          猜你喜欢
          • 2015-10-26
          • 1970-01-01
          • 2019-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多