Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser la jointure complète externe dans laravel 5.0?

Je ne sais pas exactement ce que votre requête essaie d'accomplir et où vous avez besoin d'une jointure externe complète, mais je commencerai cette réponse en disant que MySQL n'a pas de support intégré pour la jointure externe complète. Basé sur cette question SO , nous pouvons trouver une manière alternative d'écrire la requête suivante :

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

Cela peut être réécrit comme un UNION d'une jointure gauche et d'une jointure droite :

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

Dans 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 avoir besoin de deux jointures externes, mais quoi qu'il en soit, vous devriez pouvoir adapter le code ci-dessus, interroger et l'utiliser pour votre situation.

Références :