2 回答
TA贡献1811条经验 获得超5个赞
你可以利用口才和关系。在您的 ProductCategory 模型上执行以下操作:
public function product(){
return $this->belongsTo('App\Product', 'productId')
}
public function category(){
return $this->belongsTo('App\Category', 'categoryID')
}
然后你可以像这样查询:
ProductCategory::with(['product','category'])->where('categoryId', 191)->get();
TA贡献1825条经验 获得超4个赞
您可以通过在模型中定义关系来实现它,如下所示:
在您的产品模型中定义类别函数
public function categories() {
return $this->belongsToMany(Category::class, 'product_categories', 'productId', 'categoryId');
}
类别模型中的相似性定义了产品的关系
public function products() {
return $this->belongsToMany(Product::class, 'product_categories', 'categoryId', 'productId');
}
在本例中,product_categories 表是一个数据透视表,数据透视表需要遵循一些规则:
数据透视表应该是两个表的单数名称,在您的情况下它应该是product_category表
数据透视表命名约定应该按字母顺序排列,在您的情况下它应该是category_product
无需在 ppivot 表中创建 id 和 timestamps 列
您实际上不需要为数据透视表创建模型
另外,这不是规则,而是建议,您的表列应该是蛇形大小写,例如category_id
在模型中定义这些函数后,您可以按如下方式访问相关数据:
$product = Product::find(27); //finding product by id
$product->categories;
$category = Category::find(187); //finding category by id
$category->products;
- 2 回答
- 0 关注
- 95 浏览
添加回答
举报