首页 > 解决方案 > 按供应商分类的产品类别 - laravel

问题描述

我正在开发一个带有 MySQL 电子商务网站的 Laravel,我可以按供应商/商店显示其类别下的所有产品。

但问题是,如果我在同一类别下添加了一个产品,它也会向同样拥有该类别的其他供应商显示,这不应该发生。

我的查询:

$categories = Categories::with('products')
    ->whereHas('products', function ($query) use ($id) {
    $query->where('store_id' ,$id);
})
->get();

我认为问题出在with部分?但我不知道该怎么做。

数据库结构:

store

id  |  name


products

id | store_id  | category_id | name


categories
id | name

标签: phpmysqllaravel

解决方案


WhereHas()检查它是否有它,但不过滤结果。该商店是否有产品,如果是,则返回您现在包含未过滤产品的所有类别。

有一个数组语法,用于过滤with()调用。这将正确显示产品。

Categories::with(['products' => function ($query) use ($id) {
    $query->where('store_id' ,$id);
}])

推荐阅读