在功能,laravel中无法识别变量

时间:2014-11-02 17:43:30

标签: php mysql database laravel

这是我的代码:

public function userprofile($id)
{
    $users = DB::table('users')->where('username', $id)->get();

    $myposts = DB::table('posts')->where('maker', $id)->get();

    $user_id = $id;

    $postsvotes = DB::table('posts')
    ->join('upvotes', function($join)
    {
        $join->on('post_id', '=', 'upvotes.post_id')
             ->where('upvotes.user_id', $user_id);
    })
    ->get();

    return View::make('users.profile')->with('users', $users)->with('myposts', $myposts)->with('myvotes', $postsvotes);
}

我正在使用一个连接,你可以在我有这个变量$ user_id的地方看到,这应该是你从函数userprofile($ id)作为参数获得的$ id但我似乎无法看到将该参数纳入where子句。

此致

1 个答案:

答案 0 :(得分:2)

继续尝试(注意 use($ user_id)部分):

->join('upvotes', function($join) use ($user_id)
{
    $join->on('post_id', '=', 'upvotes.post_id')
         ->where('upvotes.user_id', $user_id);
})

这可能是一个变量范围问题。请参阅http://php.net/manual/en/functions.anonymous.php

中的示例#3闭包和范围