Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel 5.4 Raw Join-Abfrage

Sie können Callback verwenden, um eine kompliziertere Join-Abfrage zu erstellen.

->leftJoin(TBL_CAT, function($query){
     $query->on(TBL_CAT.'id', '=', 'p.cat_id')->where("**", "**", "**");
})

Hier ist ein Link zum Laravel-Dokument - https://laravel.com/docs/5.4/queries# tritt bei Abschnitt "Erweiterte Beitrittsklauseln".

UPD::Wie im Kommentar erwähnt, ist es keine gute Idee, Zeichenfolgen für solche Datentypen zu haben. Die Suche nach Gleichheit sollte viel einfacher sein als die Zeichenfolgenprüfung. Auch wenn Ihre Datenmenge keinen großen Unterschied machen sollte, Sie wissen nie, was in Zukunft mit Ihrer App passiert.

Aber wenn Sie das trotzdem tun möchten, können Sie es so versuchen

->leftJoin(TBL_CAT, function($query){
     $query->where(DB::raw("FIND_IN_SET(".TBL_CAT.".id, p.cat_id)"), "<>", "0");
})

Join, der die Existenz der ID in cat_id prüft.