我有以下表格:
食品:
- 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_id
、Food
.FoodName
、Food
.FoodImage
、Categories
.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();