我正在尝试过滤我的结果。为此,我有以下查询:
dplyr
但是我得到了未定义的变量$ destinations。如果我用任何id(6)替换$ destination,它会显示结果。 我也尝试在查询外回显$ destination,它返回数组。这有什么不对?任何人都可以帮助我吗?
答案 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();