sql >> Databasteknik >  >> RDS >> Mysql

Laravel 5.4 Raw Gå med i fråga

Du kan använda återuppringning för att skapa en mer komplicerad kopplingsfråga.

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

Här är länken på laravel doc - https://laravel.com/docs/5.4/queries# går med Avsnittet "Avancerade anslutningsklausuler".

UPD::Som nämnts i kommentaren är det inte bra att ha en sträng för sådana typer av data. Orsakssökning efter likhet borde vara mycket enklare än strängkontroll. Även om din mängd data inte skulle ha stor skillnad, vet du aldrig vad som kommer att hända med din app i framtiden.

Men om du fortfarande vill göra det tror jag att du kan prova så här

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

Gå med som kommer att kontrollera förekomsten av id i cat_id.




  1. VÄLJ resultat med fel kolumnordning med PyMySQL

  2. NHibernate Postgresql DateTime to Time Conversion

  3. Hur får man den sista posten från MYSQL-databasen?

  4. MySQL/Python -> Fel syntax för platshållare i uttalanden?