【问题标题】:Laravel: how to filter eloquent data by relationshipsLaravel:如何通过关系过滤雄辩的数据
【发布时间】:2015-01-29 10:43:48
【问题描述】:

我正在 laravel 中构建产品目录,我想根据产品属性过滤产品。

我有 2 个表格,产品和属性。属性有键、值和product_id。例如:

product_id - key   - value
12         - brand - BestBrandEver
23         - brand - EvenBetterBrand

现在我希望能够通过类别页面上的表单过滤我的产品,该表单传递查询字符串参数,如“brand=BestBrandEver 或 brand=EvenBetterBrand”,并仅检索该品牌的产品。最终我想对颜色、材质等做同样的事情......这很像 Magento 或 Woocommerce 的分层导航。

我现在被困了一段时间,因为我不知道如何以正确的方式开始构建它。有没有人可以帮助我解决这个问题或能够为我指明正确的方向(甚至可能有教程或视频)?

提前致谢!

【问题讨论】:

标签: magento laravel eloquent layered-navigation


【解决方案1】:

假设一个这样的网址:

/products?filters[brand][]=a&filters[brand][]=b&filters[color][]=a&filters[color][]=b

等等……


使用whereHas 方法按属性限制您的产品:

Product::whereHas('attributes', function ($query) {
    foreach (Input::get('filters') as $key => $values) {
        $query->orWhere(function($query) use ($key, $values) {
            $query->where('key', $key)->whereIn('value', $values);
        });
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2017-08-03
    • 2015-07-30
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多