Magento Laravel:如何通过关系过滤有说服力的数据
我正在laravel建立一个产品目录,我想根据它们的属性过滤产品 我有两个表,产品和属性。属性具有键、值和产品标识。例如:Magento Laravel:如何通过关系过滤有说服力的数据,magento,laravel,eloquent,layered-navigation,Magento,Laravel,Eloquent,Layered Navigation,我正在laravel建立一个产品目录,我想根据它们的属性过滤产品 我有两个表,产品和属性。属性具有键、值和产品标识。例如: product_id - key - value 12 - brand - BestBrandEver 23 - brand - EvenBetterBrand 现在,我希望能够通过分类页面上的一个表单过滤我的产品,该表单传递查询字符串参数,如“brand=BestBrandEver或brand=evenberterbrand”,并仅检
product_id - key - value
12 - brand - BestBrandEver
23 - brand - EvenBetterBrand
现在,我希望能够通过分类页面上的一个表单过滤我的产品,该表单传递查询字符串参数,如“brand=BestBrandEver或brand=evenberterbrand”,并仅检索该品牌的产品。最后,我想做同样的颜色,材料等。。。这很像Magento或Woocommerce的分层导航
我现在被困了一段时间,因为我不知道如何以正确的方式开始构建它。有没有人可以帮我做这件事,或者可以给我指出正确的方向(甚至可以通过教程或视频)
提前谢谢 假设url是这样的:
/products?filters[brand][]=a&filters[brand][]=b&filters[color][]=a&filters[color][]=b
等等
使用
whereHas
方法根据产品属性限制产品:
Product::whereHas('attributes',function($query){
foreach(输入::get('filters')为$key=>$value){
$query->orWhere(函数($query)使用($key,$value){
$query->where('key',$key)->其中('value',$value);
});
}
});
阅读文档或Dayle-Reese的文档可能会让你快速了解雄辩的关系:@SaintGenius不会以任何方式贬低Dayle的工作,但你链接的内容有点过时,在这种情况下没有真正的帮助。这里没有关于where has
的词,这正是OP需要的。不是答案,是的。看情况而定,没有帮助。对于新用户来说,这是一篇很好的文章,可以让他们进入雄辩的流程,或者至少我是这么认为的。这并不是说我是一名专家,但我知道我在雄辩方面的方法。更让我烦恼的是这个问题背后的想法。解决它的逻辑。例如,许多电子商务网站都有一个属性过滤器,显示过滤后剩下多少具有该属性的产品。例如,此荷兰站点:。他们有这样一个属性过滤系统,这就是我想要构建的。问题是我不知道从哪里开始。。。