Laravel未定义变量ID控制器

时间:2014-12-29 04:24:51

标签: php laravel-4

我收到以下错误:

  

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

1 个答案:

答案 0 :(得分:0)

不,你没有。
当您尝试在传递给$id / show()方法的lambda函数中使用变量where()时,会将orWhere()传递给函数use($variableName)。 如果您希望使用外部范围内的lambda函数变量,则应使用function($query) {构造。

而不是function($query) use($id) {使用use

关于{{1}}:https://stackoverflow.com/a/8403958/882813的答案 请记住可变早期绑定。