En af Laravels styrker er dens elegante syntaks. Hvis du har mange modeller og relationer i Laravel (på grund af mange tabeller i databasen), kan traversering ofte ende i mindre elegant kode. I løbet af tiden har tre små udvidelser vist sig for mig, som jeg kort vil introducere nedenfor. Vi bruger bare nogle arv, magiske metoder og brugerdefinerede samlinger.
Først opretter vi en ny model under app \ ConvenienceModel.php:
b45e29b9125c2ab565b5526442437686
Derefter lader vi alle modeller arve fra vores nye komfortmodel:
b45e29b9125c2ab565b5526442437686
Bland dine egne funktioner med relationer
Hvis du vil hente tilsluttede modeller, bruger du standardsyntaxen til at kalde dem:
b45e29b9125c2ab565b5526442437686
Hvis du nu tilføjer din egen forretningslogik, kan du godt lide at bruge (nedre) kamelnotation:
b45e29b9125c2ab565b5526442437686
Vi ønsker at standardisere syntaksen for begge varianter. For at gøre dette tilføjer vi den magiske metode __call til ConvenienceModel:
b45e29b9125c2ab565b5526442437686
Dette opkald er derfor også muligt i eksemplet ovenfor:
b45e29b9125c2ab565b5526442437686
Kontroller tomme genstande
Hvis du vil sende navnet på landet til en personlig adresse, vil du ofte se følgende kode:
b45e29b9125c2ab565b5526442437686
For at forhindre dette inkluderer vi stringhelper- biblioteket og returnerer et specielt objekt fra den tomme klasse tomt, hvis en model ikke findes:
b45e29b9125c2ab565b5526442437686
Dette gør også opkaldet vellykket (hvis der findes noget i dette eksempel, sendes landets navn, i alle andre tilfælde en tom streng).
b45e29b9125c2ab565b5526442437686
Hvis vi også ønsker at dække sagen om, at brugeren med ID 42 måske ikke engang eksisterer, bygger vi også en lille hjælperfunktion til dette:
b45e29b9125c2ab565b5526442437686
Det følgende opkald leverer således en tom streng, selvom brugeren slet ikke findes:
b45e29b9125c2ab565b5526442437686
Bekvemt krydser n: m-forhold
Endelig vil vi forenkle følgende kode:
b45e29b9125c2ab565b5526442437686
Til dette bruger vi muligheden for brugerdefinerede samlinger . Vi er først udvide bekvemmelighed model:
b45e29b9125c2ab565b5526442437686
Derefter opretter vi filappen \ Helpers \ ConvenienceCollection.php , som sikrer, at opkald til ukendte funktioner i samlinger udfører funktionen for alle elementer i samlingen:
b45e29b9125c2ab565b5526442437686
Så vi kan bruge følgende kode til at udskrive alle navne i alle lande på alle adresser til alle personens forældre:
b45e29b9125c2ab565b5526442437686
Men opkald som følgende er også mulige:
b45e29b9125c2ab565b5526442437686
Sorter efter flere kolonner
Det følgende opkald sorteres kun efter sted , selvom det sandsynligvis ikke var det, du ønskede:
b45e29b9125c2ab565b5526442437686
For at muliggøre sortering efter flere kolonner udvider vi vores ConvenienceCollection:
b45e29b9125c2ab565b5526442437686
Med det kan vi sortere samlingen efter flere kolonner med:
b45e29b9125c2ab565b5526442437686
Standard sortering
Vi udvider ConvenienceCollection med en anden hjælpefunktion:
b45e29b9125c2ab565b5526442437686
Nu kan du give hver model en individuel standardsorteringsfunktion:
b45e29b9125c2ab565b5526442437686
Så vi kan sortere en samling med:
b45e29b9125c2ab565b5526442437686
Objektnavne
Hver model implementerer getLabel-metoden (getName varierer afhængigt af modellen):
b45e29b9125c2ab565b5526442437686
Med dette kan du hurtigt og nemt sende navnet på et objekt. Du kan derefter implementere sortByLabel-hjælpemetoden i ConvenienceCollection:
b45e29b9125c2ab565b5526442437686
Tomme resultater
Hvis et mellemliggende trin er tomt, returnerer Laravel først () og sidste () normalt nul. Derfor introducerer vi getFirst () og getLast (), så følgende opkald altid lykkes:
b45e29b9125c2ab565b5526442437686
Med dette leverer vi en __empty_helper, som __x genkender:
b45e29b9125c2ab565b5526442437686