在闭包中使用父函数参数

时间:2013-06-24 14:38:15

标签: php closures laravel laravel-4

我正在尝试使用一个参数,该参数在过滤模型集合的闭包中传递给Laravel 4中的资源控制器操作,但是我得到以下错误:

Undefined variable: slug

如何将$slug参数从路径传递到集合过滤器闭包?

public function show($slug)
{
    return Auth::user()->sessions->filter(function($session)
    {
        return $session->slug == $slug;
    });
}

我想要实现的是返回与给定slug匹配的用户的会话。我尝试过这样的事情无济于事:

Auth::user()->sessions->whereSlug($slug);

2 个答案:

答案 0 :(得分:5)

尝试use()子句:

return Auth::user()->sessions->filter(function($session) use( $slug)
{
    return $session->slug == $slug;
});

答案 1 :(得分:0)

我使用的第二次尝试(而不是过滤器)不起作用,因为我在基本上是Fluent(查询构建器)接口上使用Eloquent方法。它可以这样修复:

Auth::user()->sessions->where('slug', '=', $slug)->first();

发布此内容可能对其他人有所帮助。