“使用 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() [关闭]的主要内容,如果未能解决你的问题,请参考以下文章