你能帮我弄清楚为什么这段代码不起作用:
public function getByTag($slug) {
$posts = Post::whereHas('tags', function($q) {
$q->where('slug', '=', $slug);
})->paginate(5);
return View::make('home')->with('posts', $posts);
}
当这样做时:
public function getByTag($slug) {
$posts = Post::whereHas('tags', function($q) {
$q->where('slug', '=', 'test');
})->paginate(5);
return View::make('home')->with('posts', $posts);
}
我只是替换了where()方法中的$ slug,因为页面中断了一个错误,说$ slug是未定义的。如果我用die($ slug)杀死页面,它会返回正确的值,如果在第二个例子中,我将变量换成静态slug值,页面会加载正确的帖子。
$ slug是否无法访问,因为我在一个接受新参数的函数中?
答案 0 :(得分:1)
public function getByTag($slug) {
$posts = Post::whereHas('tags', function($q) use ($slug) {
$q->where('slug', '=', $slug);
})->paginate(5);
return View::make('home')->with('posts', $posts);
}
添加use ($slug)
,以便传递$ slug。