内部联接的查询生成器

问题描述:

我遇到了laravel查询生成器的问题。 我不明白什么是错的。内部联接的查询生成器

我有3个表

  1. salades
  2. 成分
  3. salade_ingredient(支点为N:N的关系)

我想列出名称成分即列i ngredients.nom for salade id 。

SQL查询(工作):

select distinct ingredients.nom 
from ingredients, salade_ingredient,salades 
where salade_ingredient.salade_id = 22 
and ingredients.id = salade_ingredient.ingredient_id 

laravel查询(错误):

$Ingredients = DB::table('ingredients') 
      ->select('ingredients.nom') 
      ->join('salade_ingredient', 'salade_id', '=','22') 
      ->join('ingredients', 'ingredients.id', '=', 'salade_ingredient.ingredient_id') 
      ->join('salades','salade.id','=','salade_ingredient.salade_id') 
      ->get()->distinct(); 

你能帮助我吗?我是laravel的新人。

+0

什么问题?请描述。 –

+1

1)你的sql查询工作正常吗? 2)你的laravel查询给出错误或错误的结果? 3)如果发生错误,那么错误是什么? –

+0

似乎,你有'select'语句在连接之前是这样的问题,所以选择移动到' - > get()' –

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'ingredients' (SQL: select `ingredients`.`nom` from `ingredients` inner join `salade_ingredient` on `salade_id` = `$Salade["id"]` inner join `ingredients` on `ingredients`.`id` = `salade_ingredient`.`ingredient_id` inner join `salades` on `salade`.`id` = `salade_ingredient`.`salade`.`id`)