如何通过数据透视表展示相关产品?

时间:2021-01-25 16:24:39

标签: php laravel eloquent eloquent-relationship

我想显示属于同一类别的相关项目。

这是我的 3 个表结构

食品项目表 : "food_item_id",

"姓名" ,

"图片",

食品类别表:

“food_item_category_id”

“姓名”

数据透视表

id,

food_item_id

food_item_category_id

FooItem 模型:

public function foodItemCategory() {
    return $this->belongsToMany(FoodItemCategory::class, 'food_items_have_categories', 'food_item_id', 'food_item_category_id')
        ->withPivot('food_item_id', 'food_item_category_id')
        ->withTimestamps();
}

食品类别模型:

 public function foodItem() {
    return $this->belongsToMany(FoodItem::class, 'food_items_have_categories', 'food_item_category_id', 'food_item_id')
        ->withPivot('food_item_id', 'food_item_category_id')
        ->withTimestamps();
}

我想从特定类别中获取所有食品。假设用户点击了一个 ID 为 1 的食物项目,它属于类别 ID 2。现在我想显示更多属于类别 ID 2 的食物项目。我想在我的视图刀片中显示它。 现在,如何在视图中显示同一类别中的相关产品?

1 个答案:

答案 0 :(得分:1)

由于您的关系是多对多的,您可以这样做:

$food = FoodItem::find(1);
$categories = $food->foodItemCategory;
$items = [];
foreach($categories as $category) {
   $items[$category->id] = $category->foodItem;
}

然后您可以将 $items 传递给您的刀片模板。