Bruke sammenføyninger i Laravel veltalende spørsmål for bedre ytelse

Bruke sammenføyninger i Laravel veltalende spørsmål for bedre ytelse
Oftest ser jeg at folk gjør mange feil når de samhandler med en database, og mange nybegynnere tar ikke virkelig hensyn til hvor mange samtaler. Og dette er bra i begynnelsen. Spesielt hvis søknaden din er liten og du fortsatt lærer.

I tillegg tror jeg også at du i de første dagene av Laravel -applikasjonen bør være fokusert på å bygge funksjonene og koding. Når du begynner å løpe inn i problemer og faktisk begynner.

99% av tiden vil du bruke veltalende metoder for å ringe databasesamtaler, og noen ganger viser den enkle ruten du vil ta, og viser problemer nedover linjen.

Orm som veltalende er rett og slett fantastisk, og det vil støtte deg helt til slutten.

Tenk deg at du har bygget søknaden din i noen tid nå, og at du vil refaktorere noen av samtalene dine for å gjøre dem litt raskere. La oss gå gjennom et eksempel på hvordan du kan bli med på spørsmål for å få samme resultat, på kortere tid.

Problem

Tenk på et eksempelkode nedenfor, som bruker Bruker og Organisasjon Tabell for å returnere brukernavnet.

$ bruker = bruker :: finn ($ user_id);
$ Organisasjon = organisasjon :: hvor ('id', $ bruker-> organisasjon_id)-> pluck ('name')-> first ();

Kodeeksemplet ovenfor er enkelt nok til å forstå, men det bruker to separate anrop til databasen. Den andre samtalen er åpenbart pålitelig av den første, og derfor må vi vente på at den første skal avsluttes før vi kan komme til den neste.

Løsning

La oss forbedre dette kodeeksemplet ved å kombinere begge forespørslene til en enkelt spørring.

$ user_with_organization = bruker :: hvor ('id', $ user_id)
-> LeftJoin ('Organisasjoner', 'brukere.Organization_id ',' = ',' Organisasjoner.id ')
-> Velg ('Brukere.id ',' organisasjoner.navn ')-> først ();

Nå, det vi nettopp har gjort ovenfor?
1. For det første er vi målrettet mot brukeren basert på $ user_id, nøyaktig den samme spørringen som den første.
2. Deretter blir vi med i resultatene med organisasjonstabellen ved hjelp av brukerens tabell Fyll venstre sammenføyningsspørsmål
3. Første spørring tok tak i brukermodellen som gir oss tilgangen til Organisasjon_id Egenskap.
4. Vi velger bruker -ID og organisasjonsnavnet.
5. Til slutt bruker vi den første () metoden, som sikrer at når den først finner en enkelt organisasjon som tilfredsstiller kravet, vil den returnere organisasjonsnavnet umiddelbart.

Hvordan venstre Join fungerer

Når du har to spørsmål og du vil bli med på den andre, betyr det at sluttresultatet ditt vil være et resultat av din første spørring, der noen av resultatene kan motta noe samsvar med den andre spørringen og ha noen ekstra data med dem.

Det er det. Nå har du en bedre forståelse av hvordan venstre Join fungerer. Bruk den til å kombinere spørsmål som er relatert til en enkelt forespørsel til databasen. Det ser ganske enkelt ut, men å bruke den samme metoden kan hjelpe deg med å optimalisere de mest komplekse spørsmålene som omhandler flere tabeller.

Hvis du har noen kommentarer eller forslag, kan du gjerne kontakte meg.