我必须在函数中遵循雄辩的db语句。在数据库上有两个读取语句。
$groups = V_Member::where('groupadmin', '=', Auth::id())->get();
$members = V_Member::where([['idgroup', $groupid],['groupadmin', Auth::id()]])->get();
首先,我要执行第一个db语句,然后再对集合/变量进行过滤。 像下面这样。但是我得到一个错误。我必须改变什么?
$groups = V_Member::where('groupadmin', '=', Auth::id())->get();
$members = $groups::where(['idgroup', '=', $groupid])->get();
这是错误消息
非静态方法Illuminate \ Support \ Collection :: where()不应被静态调用
答案 0 :(得分:1)
如果您要过滤集合而不是运行2个查询,则只需更改:
$members = $groups::where(['idgroup', '=', $groupid])->get();
收件人:
$members = $groups->where('idgroup', '=', $groupid);
有关更多信息,请查看documentation
答案 1 :(得分:1)
由于$ groups是一个集合,而不是模型类...
您应该使用->where()
而不是::where()
不要将集合与雄辩的查询混淆,这是一个常见错误。
另外,不要将雄辩的查询方法与集合的方法混淆,这是另一个常见的错误。
答案 2 :(得分:1)
您可以使用:
$members = $groups->where('idgroup', $groupid);
操作员=
不是必需的,但是您可以在需要的地方使用它。您还可以查看where method documentation。