微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用数据透视表按类别 ID 获取产品

如何解决使用数据透视表按类别 ID 获取产品

我有一个函数,我可以在其中传递类别 id 并基于该函数获取所有产品。

这是我的数据库结构

类别数据库

category_name

产品数据库

product_name;

category_product:

category_id;
product_id;

以下是它们之间的关系

在产品中:

public function categories()
    {
        return $this->belongsToMany(Category::class);
    }

在类别中:

public function products()
    {
        return $this->belongsToMany(Product::class);
    }

我测试了多个查询,但对我的情况没有任何效果

解决方法

你可以通过两种不同的方式来做到这一点

间接方式验证该类别是否存在(2 个查询)

$category = Category::with('products')->findOrFail($categoryId);
// you can also do without the with(); only one id,so no benefit for the eager load
// $category = Category::findOrFail($categoryId);
$products = $category->products;

直接方式,如果类别不存在(但没有消息),将返回一个空集合(1个查询)

$products = Product::whereHas('categories',function($qbCategory) use($categoryId) {
    $qbCategory->where('id',$categoryId);
})->get();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。