未定义的变量。 Laravel

时间:2018-02-12 05:33:21

标签: php laravel eloquent

我正在尝试过滤我的结果。为此,我有以下查询:

dplyr

但是我得到了未定义的变量$ destinations。如果我用任何id(6)替换$ destination,它会显示结果。 我也尝试在查询外回显$ destination,它返回数组。这有什么不对?任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

need to add use()向闭包传递变量。例如:

criteria

或者,您可以使用request()全局帮助程序:

->whereHas('destinations', function($q) use($destinations) {

来自the docs

  

闭包还可以从父作用域继承变量。任何此类变量都必须传递给->whereHas('destinations', function($q) { $q->where('destinationsid', request('destinations')); 语言构造。

答案 1 :(得分:2)

尝试在use($destination)之后添加function($q)

$destinations = $request['destinations'];

if($request->has('destinations'))
{
     $trips = Trip::where('status','=',1)->whereHas('destinations', function($q) use($destinations) {
        $q->where('destinationsid', '=', $destinations);
     })->get();
} else {
        echo "No destination provided";
}

答案 2 :(得分:1)

您需要在封闭处传递destinations变量:

$destinations = $request['destinations'];
    if($request->has('destinations'))
    {
        $trips = Trip::where('status','=',1)->whereHas('destinations', function($q) use ($destinations){
        $q->where('destinationsid', '=', $destinations);
        })->get();
    }else{
         echo "No destination provided";
    }

答案 3 :(得分:0)

您需要在封闭处使用目标变量:

if($request->has('destinations'))
{

    $destinations = $request['destinations'];
    $trips = Trip::where('status','=',1)->whereHas('destinations', function($q) use ($destinations){
    $q->where('destinationsid', '=', $destinations);
    })->get();