过滤集合会更改其类型(如何按自定义属性过滤)

时间:2019-07-09 13:48:17

标签: php laravel laravel-5 eloquent

我有一些用户想要通过自定义属性(访问者)进行过滤。

据我所知,我可以做一件事情:

$filtered = Users::someScope()
    ->anotherScope()
    ->whereHas(function() { 'whatever' })
    ->get()
    ->where('custom_attribute', 5);

我可以做的另一件事是在->get()之后单独过滤集合:

$filtered = $users->filter(function($value, $key){
    return $value['custom_attribute'] == 5;
});

然后将变量发送到Vuetify的下拉列表中进行迭代。

两者都产生相同的结果。我认为它们会更改变量的类型。

结果:

如果我返回$filtered,则在迭代时会显示[Object object]。

如果我返回$filtered->all(),则会抛出一个Htmlspecialchars expects string - array given

如果我在过滤之前/不进行过滤的情况下返回-一切正常。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用+-----------+----------+ | ip | quantity | +-----------+----------+ | 172.0.0.1 | 2 | +-----------+----------+ | 172.0.0.2 | 1 | +-----------+----------+ | 172.0.0.3 | 1 | +-----------+----------+ | 172.0.0.4 | 1 | +-----------+----------+ | 172.0.0.5 | 1 | +-----------+----------+ 。它将恢复您的密钥。

values()

如果您需要使用json发送,可以将其设为$filtered = $users->filter(function($value, $key){ return $value['custom_attribute'] == 5; })->values();