使用 Laravel 从数据透视表中搜索的最佳方法

Khi*_*anu 1 laravel eloquent pivottable.js

使用 Laravel 从数据透视表中搜索。

这是我的表结构:

Product
id
name

Categories
id
name

product_category (Pivot table)

id
category_id
product_id

//products can have multiple categories 
Run Code Online (Sandbox Code Playgroud)

产品型号:

public function categories(){
     return $this->belongsToMany(Category::class, 'product_category');
}
Run Code Online (Sandbox Code Playgroud)

按类别 ID 搜索所有产品的最佳方法是什么?目前我正在这样做,这似乎不是一种有效的方式:

//Controller
$categories = product_category::where('category_id',1)->get();
Run Code Online (Sandbox Code Playgroud)

现在我必须遍历类别,然后获取产品并将其传递给视图?知道如何以有效的方式做到这一点吗?

Rwd*_*Rwd 5

为此,您可以使用whereHas()方法:

$categoryId = 1;

$products = Product::whereHas('categories', function ($query) use($categoryId) {
    $query->where('id', $categoryId);
})->get();    
Run Code Online (Sandbox Code Playgroud)

以上将返回 id 等于 的类别中的所有产品$categoryId