我无法访问在方法调用之外可用的变量。 (使用Laravel)一个例子:
print "Here is my name: $name\n";
return Foo::find(1)->whereHas('bar', function($q) {
global $name;
print "Unfortunately this name is blank: " . $name;
$q->where('name', 'like', '%' . $name . '%');
})->first();
whereHas函数中的$ name始终为空。如果我没有将它声明为$ global,那么我会收到一个警告,即$ name根本不存在。我如何获得它?
答案 0 :(得分:2)
您可以使用use
关键字发送对匿名函数(即闭包)的引用:
$name = 'foo';
return Foo::find(1)->whereHas('bar', function($q) use ($name) {
print "Here name should be : " . $name; // foo
$q->where('name', 'like', '%' . $name . '%');
})->first();
顺便说一下,我没有测试过这个,但它应该可以工作