1

我试图在 laravel 5 中加入 Join() 但我有一些问题希望你能帮助我,

$results = DB::table('words')
             ->join('users_words_relationship','users_words_relationship.word_id','=','words.id')
             ->where('users_words_relationship.user_id','=',Auth::user()->id)  
             ->join('translate','translate.word_id','=','words.id') 
             ->select('words.word','translate.translate')
             ->get();

这个查询确实返回了这样的重复结果

word    translation
Hello   مرحبا
Hello   اهلا وسهلا
Hello   مرحبآ
Hello   اهلا و سهلا

我也在尝试像这样添加 groupBy()

$results = DB::table('words')
             ->join('users_words_relationship','users_words_relationship.word_id','=','words.id')
             ->where('users_words_relationship.user_id','=',Auth::user()->id)  
             ->join('translate','translate.word_id','=','words.id') 
             ->groupBy('translate.word_id')
             ->select('words.word','translate.translate')
             ->get();

它确实返回了一个结果你好,对,但没有所有的翻译只有一个!

喜欢

word    translation
Hello   مرحبا
4

2 回答 2

1

您正在寻找组连接。

在 Laravel 中,您的查询将变为

DB::table('words')
  -> join('users_words_relationship','users_words_relationship.word_id','=','words.id')
  -> where('users_words_relationship.user_id','=',Auth::user()->id) 
  -> join('translate','translate.word_id','=','words.id')
  -> select('words.word', DB::raw('GROUP_CONCAT(DISTINCT translate.translate) as translations'))
  -> group_by('words.word')
  -> get();
于 2015-10-03T17:59:54.960 回答
0

如果您正在寻找以下输出

单词翻译

你好 مرحبا

你好 اهلا وسهلا

你好 مرحبآ

利用distinct('translate.translate')

这是查询

$results = DB::table('words')
                 ->join('users_words_relationship','users_words_relationship.word_id','=','words.id')
                 ->where('users_words_relationship.user_id','=',Auth::user()->id)  
                 ->join('translate','translate.word_id','=','words.id') 
                 ->select('words.word','translate.translate')
                 ->distinct('translate.translate')
                 ->get();
于 2015-10-03T16:30:17.110 回答