gpt4 book ai didi

laravel - 将 Laravel Nova 过滤器应用于计算值

转载 作者:行者123 更新时间:2023-12-02 03:27:28 25 4
gpt4 key购买 nike

我有一个 Laravel Nova 资源,它里面有一个名为 View 的计算值。我想添加一个 Nova 过滤器,它可以影响计算值的结果(而不是查询本身),但不知道如何执行此操作。

我的计算值如下所示:

Text::make('Views', function() {
return $this->getViewsCount();
}),

我希望能够做这样的事情:

Text::make('Views', function() {
if(isset($filterValue)) {
return $this->getViewsBetween($filterValue);
} else {
return $this->getViewsCount();
}
}

最佳答案

您可以尝试从请求中获取过滤器值:

$queryFilters = $request->query('filters')

该参数采用 base64 和 json 编码,因此您必须先对其进行解码。看看 Laravel\Nova\Http\Requests\DecodesFilters 作为引用。

您的计算字段可能如下所示:

Text::make('Views', function () use ($request) {

$queryFilters = $request->query('filters');
$decodedFilters = collect(json_decode(base64_decode($queryFilters), true));
$computed = $decodedFilters->map(function ($filter) {
return $this->getViewsBetween($filter['value']);
});

if ($computed->isEmpty()) {
return $this->getViewsCount();
}

return $computed->implode(',');
})

更新:$decodedFilters 保存所选过滤器的类和值。

Illuminate\Support\Collection {
#items: array:1 [
0 => array:2 [
"class" => "App\Nova\Filters\UserType"
"value" => "admin"
]
]
}

关于laravel - 将 Laravel Nova 过滤器应用于计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52824830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com