查询构建器中的函数不使用请求或变量

时间:2018-03-12 21:07:41

标签: laravel

我试着学习如何使用它来正确发布。我刚开始Laravel ....最近

为什么这不起作用?

 public function getFunctionFromUserGroup(Request $request)
    {
        try
        {
            $abc = $request->get('usertypeid');
            return response() -> json(SystemFunction::whereNotIn('Function_ID', function($q){
                    $q->select('Function_ID')->from('TB_UserAccess')->Where('UserType_ID', $abc );})->get(), 200);

        }
        catch (\Exception $e)
        {
            return response(['error'=> $e->getMessage()], 422);
        }
    }

为什么这有效?

 public function getFunctionFromUserGroup(Request $request)
    {
        try
        {
            return response() -> json(SystemFunction::whereNotIn('Function_ID', function($q){
                    $q->select('Function_ID')->from('TB_UserAccess')->Where('UserType_ID', 1);})->get(), 200);

        }
        catch (\Exception $e)
        {
            return response(['error'=> $e->getMessage()], 422);
        }
    }

3 个答案:

答案 0 :(得分:1)

你必须在闭包内提供$abc

... function($q) use($abc) { ...

答案 1 :(得分:0)

在功能内部看不到

$ abc !您必须将其转发为函数参数。

答案 2 :(得分:0)

要使代码正常运行,您需要在函数内使用$ abc,使用use()尝试下面的代码

{{1}}