我在 php (laravel) 中有这个函数:
public static function isUserParticipatesInTournament($tourId, $userId)
{
var_dump($userId); //dumped
$user = User::find($userId);
if(!$user)
{
return null;
}
$obj = $user->whereHas('tournaments', function($query)
{
var_dump($tourId); //error
$query->where('id', '=', $tourId); //error
})->get();
return $obj;
}
问题是在闭包中$obj = $user->whereHas('tournaments', function($query){...}
the $tourId
其中变量未定义。我收到此错误:Undefined variable: userId
.
为什么会发生这种情况?该变量是在内部函数的范围内声明的。我唯一的想法是,它是一个回调函数。
当我尝试执行这个函数时:$obj = $user->whereHas('tournaments', function($query, $tourId){...}
然后我得到这个异常:
Missing argument 2 for User::{closure}()
Your $tourId
变量不在匿名函数的范围内。看看use
关键字以了解如何将其添加到范围中。请参阅本页的示例 3:http://www.php.net//manual/en/functions.anonymous.php
它应该类似于以下内容:
$obj = $user->whereHas('tournaments', function($query) use($tourId)
{
var_dump($tourId); // Dumps OK
})->get();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)