2017-01-15 2 views
1

Il est mon contrôleur:Comment utiliser la jointure externe complète dans laravel 5.0?

public function lihatpesanansemua() //ajax 
{ 
    if(Request::ajax()) 
    { 
     $hasil = DB::table('pesanan')->join('pemesan','pemesan.id', '=', 'pesanan.idpemesan')->join('komputer', 'komputer.id' ,'=', 'pesanan.idkomputer') 
     ->select('pesanan.id', 'pemesan.nama', 'pesanan.tglpesan', 'pesanan.jampesan', 'pesanan.jamakhir', 'komputer.nama_komputer', 'komputer.lantai', 'komputer.Kelas') 
     ->orderby('pesanan.id', 'asc') 
     ->get(); 
     $hasil = json_encode($hasil); 
     return $hasil; 
    } 
} 

Et c'est est jointure. Comment passer à la jointure externe complète? Merci, désolé mon mauvais anglais

+0

_Which_ joindre voulez-vous changer? Vous semblez actuellement avoir _two_ jointures internes dans votre requête. –

+0

oui, deux d'entre eux –

+0

Ça va être beaucoup de code. Êtes-vous sûr de disposer de jointures externes complètes pour les requêtes _both_? Peut-être que vous pouvez partager quelques données avec nous et quel résultat vous essayez d'obtenir? –

Répondre

1

Je ne sais pas exactement ce que votre requête essaie d'obtenir, et où vous avez besoin d'une jointure externe complète, mais je vais commencer cette réponse en disant que MySQL n'a pas de support intégré pour l'extérieur complet joindre. Sur la base de this SO question, nous pouvons trouver un moyen une alternative façon d'écrire la requête suivante:

SELECT * FROM t1 
FULL OUTER JOIN t2 
    ON t1.id = t2.id 

Cela peut être réécrite comme UNION d'une jointure gauche et un droit joignons:

SELECT * FROM t1 
LEFT JOIN t2 ON t1.id = t2.id 
UNION ALL 
SELECT * FROM t1 
RIGHT JOIN t2 ON t1.id = t2.id 

En Laravel , nous pouvons écrire le code suivant pour représenter la jointure externe complète ci-dessus:

$second = DB::table('t2') 
      ->rightJoin('t1', 't1.id', '=', 't2.id') 

$first = DB::table('t1') 
      ->leftJoin('t2', 't1.id', '=', 't2.id') 
      ->unionAll($first) 
      ->get(); 

Encore une fois, je ne sais pas pourquoi vous pensez que vous avez besoin de deux jointures externes, mais quel que soit vous devrait être capable d'adapter le code ci-dessus et interroger et l'utiliser pour votre situation.

Références: