laravel - 使用 laravel 从数据透视表中搜索的最佳方法
问题描述
使用 laravel 从数据透视表中搜索。
这是我的表结构:
Product
id
name
Categories
id
name
product_category (Pivot table)
id
category_id
product_id
//products can have multiple categories
产品型号:
public function categories(){
return $this->belongsToMany(Category::class, 'product_category');
}
按类别 ID 搜索所有产品的最佳方法是什么?目前我正在这样做,这似乎不是一种有效的方式:
//Controller
$categories = product_category::where('category_id',1)->get();
现在我必须遍历类别,然后获取产品并将其传递给视图?知道如何以有效的方式做到这一点吗?
解决方案
为此,您可以使用whereHas()方法:
$categoryId = 1;
$products = Product::whereHas('categories', function ($query) use($categoryId) {
$query->where('id', $categoryId);
})->get();
以上将返回 ID 等于的 Category 中的所有产品$categoryId
。
推荐阅读
- html - 加载数据时的可访问性
- php - 在 XML 文件中使用 HTML 标记并稍后将它们显示/识别为 HTML
- java - SpringBoot 2.0.5 应用程序启动后失败
- c# - WaitForSeconds 逐渐变得不同步... Unity
- python - 如何计算每张图像具有不同误报的灵敏度(召回率)
- ios - 一旦该节点在 ARCamera 中不可见,获取指向 SCNNode 的方向箭头
- php - 如何从缓存中获取以某个键开头的所有值
- svg - 如何制作 svg 散射过滤器?
- angular - 材料数据表的复选框问题
- react-native-android - gRPC Android 客户端异常 io.grpc.StatusRuntimeException: UNAVAILABLE