用AND和Where卡在laravel查询中

时间:2018-12-05 15:52:47

标签: php database laravel

我需要你的帮助。我尝试执行此查询:

     public function future_trips($cat_id, $city_id)
        {
            $trips=Events::where('start_date','>',Carbon::now()->subDay(5))
                ->where(function ($q)
                {
                    $q->where('category_id',$cat_id)->orWhere('city', $city_id);
                })
                ->get();
}
  

ErrorException:未定义的变量:文件C:\ x中的cat_id ......

     

未定义变量$ cat_id少...(Ctrl + F1)检查可以   产生两种类型的警告:变量的定义不能   随处可见。 (“未定义的变量”)有一个或多个路径   无需定义变量即可使用变量用法。   (“变量可能尚未定义”)

有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:3)

您需要使用use将这些变量添加到函数闭包中。 Php不会在闭包之外自动包含变量。

public function future_trips($cat_id, $city_id)
{
    $trips = Events::where('start_date', '>', Carbon::now()->subDay(5))
        ->where(function ($q) use ($cat_id, $city_id)
        {
            $q->where('category_id',$cat_id)->orWhere('city', $city_id);
        })
        ->get();
}