2015-10-03 2 views
1

Je tentais de nous rejoindre() dans Laravel 5 mais j'ai quelques problèmes J'espère que vous pouvez me aider,Laravel Rejoindre Répéter résultat

$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(); 

cette requête a retour de résultat de répétition comme

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

et je tentais aussi ajouter groupBy() comme

$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(); 

ne revenait un résultat Bonjour droit, mais n'a pas eu toute traduction j ust un !!

comme

word translation 
Hello مرحبا 
+0

Qu'est-ce que vous essayez de faire? Il semble qu'il y ait plus d'une traduction de 'Hello'. Lequel essayez-vous de trouver? Le regroupement des résultats ne donnera qu'une traduction. – Hidde

+0

J'essaie d'obtenir toute traduction pour le mot "hello" aime ce résultat '[word = hello, translat = مرحبا, اهلا وسهلا, مرحبآ]' –

Répondre

0

Si vous êtes à la recherche pour la sortie suivante

mot traduction

Bonjour مرحبا

Bonjour اهلا وسهلا

Bonjour مرحبآ

Utilisez distinct('translate.translate')

Voici la requête

$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(); 
+0

je vous remercie de votre aide mais je suis à la recherche de ce résultat ' [mot = Bonjour, traduit, مرحبا, اهلا وسهلا, مرحبآ] ' –

1

Vous êtes à la recherche de la concaténation du groupe.

Dans Laravel votre requête deviendra

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(); 
+0

merci, c'est un excellent travail –

+1

si la réponse résout votre problème, s'il vous plaît acceptez-le. D'autres personnes ayant le même problème pourront trouver la solution plus rapidement. – Hidde