“使用 Laravel 调用未定义的方法 Illuminate\\Database\\Query\\Builder::users() [关闭]

Posted

技术标签:

【中文标题】“使用 Laravel 调用未定义的方法 Illuminate\\\\Database\\\\Query\\\\Builder::users() [关闭]【英文标题】:"Call to undefined method Illuminate\\Database\\Query\\Builder::users() using Laravel [closed]“使用 Laravel 调用未定义的方法 Illuminate\\Database\\Query\\Builder::users() [关闭] 【发布时间】:2019-12-17 07:41:05 【问题描述】:

我的控制器代码:

public function addGroup(Request $request)

    $validator = UserValidations::validateGroups($request->all());

    if($validator->fails()) 
        return response(['status' => false, 'message' => 'Validation Errors', 'errors' => $validator->errors()->all()], 500);
    

    try 

        $request->request->add(['created_by' => Auth::user()->id]);
        $group = $this->group->create($request->only($this->group->getModel()->fillable));

        if(!empty($request->get('group_members')))
        
            $groupMembers = Group::where('id', $group->id);
            $groupMembers->users()->attach($request->get('group_members'));
        


        return response(['status' => true, 'message' => 'Group added', 'data' => $group], 500);

     catch (\Exception $ex) 
        return response(['status' => false, 'message' => 'Validation Errors', 'errors' => $ex->getMessage()], 500);
    

有关系的我的组模型

public function users()

    return $this->belongsToMany('App\Models\Users\User', 'group_members');

我的请求参数:


    "name": "CM",
    "group_members": [74,75]

我想为组成员(用户)分配组名并创建组名,但我收到Call to undefined method Illuminate\\Database\\Query\\Builder::users()的错误

我哪里出错了?

【问题讨论】:

您在群组通话中忘记了get()$groupMembers = Group::where('id', $group->id)->get(); 当我使用 get() 时,它说方法 users() 不存在 $groupMembers->users()->attach($request->get('group_members')); 使用get时的完整信息是什么? 【参考方案1】:

你必须以这种方式获得组:

$groupMembers = Group::where('id', $group->id)->first();

为了能够将Users 附加到Group,您首先需要使用first() 获取实例。你不能在Query\Builder上打电话给attach()

【讨论】:

欢迎来到 Stack Overflow!你能解释一下那到底是做什么的吗?为什么这是正确答案?

以上是关于“使用 Laravel 调用未定义的方法 Illuminate\\Database\\Query\\Builder::users() [关闭]的主要内容,如果未能解决你的问题,请参考以下文章