Join in Pivot tabel Laravel


Join in Pivot tabel Laravel

我有以下表格:

食品:

  • Foodid(pk(
  • FoodName
  • FoodImage
  • 说明

类别:

  • 类别_id(pk(
  • 类别名称

餐厅

  • Res_id(pk(
  • ResName
  • 地址

category_fod_restaurant

  • 类别_id(fk(
  • Food_id(fk(
  • Res_id(fk(

现在我想显示基于类别名称的食品。为此,我提出以下查询:

$Category = DB::table('Food')
                ->select('Food.Food_id','Food.FoodName',
                        'Food.FoodImage','Categories.CategoryName')
                ->join('Categories','Categories.Category_id',
                        '=','category_food_restauarant.Category_id')
                ->where('Categories.CategoryName', 
                        '=','Breakfast')->get();

但这给了我一个错误:

SQLSTATE[42S22]:找不到列:1054"on clause"中的未知列"Food.Category_id"(SQL:从Food内部选择Food.Food_idFood.FoodNameFood.FoodImageCategories.CategoryName,将Categories连接到Categories上。Category_id=Food.Category_id,其中Categories.CategoryName=早餐(。

问题出在哪里。如何使用这些表格根据类别显示食物?

您正在连接Food表和Categories表,但它们之间没有直接的关系。因此,您必须通过category_food_restaurant连接这两个表。以下内容应该有效:

DB::table('category_food_restaurant')
            ->select('Food.Food_id','Food.FoodName',
                    'Food.FoodImage','Categories.CategoryName')
            ->join('Categories','Categories.Category_id',
                    '=','category_food_restaurant.Category_id')
            ->join('Food','Food.Food_id',
                    '=','category_food_restaurant.Food_id')
            ->where('Categories.CategoryName', 
                    '=','Breakfast')->get();