如何过滤Laravel集合

时间:2018-08-25 12:31:17

标签: laravel eloquent

我必须在函数中遵循雄辩的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()不应被静态调用

3 个答案:

答案 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