我收到以下错误:
ErrorException(E_UNKNOWN)未定义的变量:id
下面是我的代码,它来自“Controller”
public function show($id)
{
if(Auth::user()) {
$message = Message::where(function($query) {
$query->where('from_user', '=', Auth::user()->username)->where('id', '=', $id);
})->orWhere(function($query) {
$query->where('from_user', '=', Auth::user()->username)->where('id', '=', $id);
});
if($message == null) {
return Redirect::action('MessageController@index');
}
return View::make('view', ['message' => $message, 'active' => 'none']);
}
}
更新:我的路线是:Route::get('/message/{id}', 'MessageController@show')->before('auth');
我无法理解,我搞砸了什么,我已经在函数参数中传递了$id
。
答案 0 :(得分:0)
不,你没有。
当您尝试在传递给$id
/ show()
方法的lambda函数中使用变量where()
时,会将orWhere()
传递给函数use($variableName)
。
如果您希望使用外部范围内的lambda函数变量,则应使用function($query) {
构造。
而不是function($query) use($id) {
使用use
关于{{1}}:https://stackoverflow.com/a/8403958/882813的答案 请记住可变早期绑定。