laravel - 根据价格过滤器过滤产品(从到)
问题描述
我正在尝试根据价格过滤我的产品,使用视图中的表格,我作为两个单独的过滤器来回传递并从那里卡住。这是我的产品模型中的代码:
public function scopeFilter($query, array $filters)
{
$query->when(
$filters['from'] ?? false,
function ($query,$request) {
$query->whereBetween('price', [$request->from,$request->to]);
}
);
}
显然这不起作用,当我 dd 请求时,它只给了我“from”值。有任何想法吗??这是我的产品控制器:
public function index()
{
$categories = Category::get();
$products = Product::latest()->filter(request(['category','from','to']))->simplePaginate(5);
return view('welcome',compact('products','categories',));
}
目前它给了我一个错误“试图让非对象的属性'to'”
解决方案
你读错了请求,你的范围过滤功能应该是这样的:
public function scopeFilter($query, array $filters)
{
$query->when(
($filters['from'] && $filters['to']) ?? false,
function ($query) use ($filters){
$query->whereBetween('price', [$filters['from'],$filters['to']]);
}
);
}
推荐阅读
- php - 在自定义 foreach 循环中按字母顺序对结果进行排序
- python - Python删除多行
- javascript - Netlify 和 Firebase
- c# - Blazor OnChange 事件
- reactjs - 我制作反应乐透程序但不重新渲染号码(使用 contextAPI)
- php - 如何计算 Naravel 中的正确答案测验?
- postgresql - 在 PostGis 上的 Spring Boot 空间查询中遇到无效的字节序标志值
- java - 未连接适配器;跳过布局 _____ AndroidX RecyclerView
- azure - 我们如何使用服务帐户或用户帐户使用 C# 控制台应用程序提取 Azure keyvault 值
- shell - 如果该行需要更多时间执行,则跳过 shell 脚本中的执行行