Laravel - 从请求中过滤掉“空”值

sgt*_*sco 2 filter laravel laravel-5

我试图过滤我的$request不包含任何字段为qty空的输入数据(qty位于数据透视表上)

我已经尝试过:

$qty = $request->input('qty'); //define qty

$filtered = $request->filter(function ($qty, $key) {
   return $qty != null;
});

$filtered->all();
Run Code Online (Sandbox Code Playgroud)

但我收到错误Method Illuminate\Http\Request::filter does not exist,这很奇怪,因为我use Illuminate\Http\Request;在控制器中。

虽然我以前从未过滤过数据,所以我不知道这是否是正确的方法。

Ada*_*uez 7

我非常肯定该$request实例没有过滤方法。我认为你可以使用助手来实现你想要的collect

$input = collect(request()->all())->filter(function($value) {
    return null !== $value;
})->toArray();
Run Code Online (Sandbox Code Playgroud)

更新:从 Laravel 8.62.0 开始,collect请求中存在该方法:

$input = collect(request()->all())->filter(function($value) {
    return null !== $value;
})->toArray();
Run Code Online (Sandbox Code Playgroud)