Laravel egyik erőssége az elegáns szintaxisa. Ha sok modellje és kapcsolata van a Laravel-ben (az adatbázisban lévő sok táblázat miatt), akkor a bejárás gyakran kevésbé elegáns kóddal zárulhat. Az idők folyamán három kis kiterjesztés bizonyított számomra, amelyeket az alábbiakban röviden bemutatnék. Csak néhány öröklési, mágikus módszert és egyedi gyűjteményt használunk.
Először létrehozunk egy új modellt az app \ ConvenienceModel.php alatt:
b45e29b9125c2ab565b5526442437686
Ezután hagyjuk, hogy az összes modell örököljön az új ConvenienceModelből:
b45e29b9125c2ab565b5526442437686
Keverje össze saját funkcióit a kapcsolatokkal
Ha csatlakoztatott modelleket szeretne beszerezni, a szokásos szintaxist használja a híváshoz:
b45e29b9125c2ab565b5526442437686
Ha most hozzáadja saját üzleti logikáját, akkor szívesen használja az (alsó) teve eset jelölését:
b45e29b9125c2ab565b5526442437686
Mindkét változat szintaxisát egységesíteni szeretnénk. Ehhez hozzáadjuk a __call mágikus módszert a ConvenienceModelhez:
b45e29b9125c2ab565b5526442437686
Ez a felhívás tehát a fenti példában is lehetséges:
b45e29b9125c2ab565b5526442437686
Ellenőrizze az üres tárgyakat
Ha az ország nevét személyes címre kívánja kiírni, akkor gyakran a következő kódot fogja látni:
b45e29b9125c2ab565b5526442437686
Ahhoz, hogy ezt megakadályozzuk, mi tartalmazza a stringhelper könyvtár és visszaút egy speciális objektum az üres osztály üres, ha a modell nem található:
b45e29b9125c2ab565b5526442437686
Ez a hívást is sikeressé teszi (ebben a példában, ha valamit találunk, akkor az ország neve jelenik meg, minden más esetben üres karakterlánc).
b45e29b9125c2ab565b5526442437686
Ha szeretnénk kitérni arra az esetre is, hogy a 42-es azonosítóval rendelkező felhasználó nem is létezik, akkor ehhez egy kis segítő funkciót is építünk:
b45e29b9125c2ab565b5526442437686
A következő hívás tehát akkor is üres karakterláncot nyújt, ha a felhasználó egyáltalán nem létezik:
b45e29b9125c2ab565b5526442437686
Kényelmesen áthalad az n: m kapcsolatokon
Végül le akarjuk egyszerűsíteni a következő kódot:
b45e29b9125c2ab565b5526442437686
Ehhez használjuk az egyedi gyűjtemények lehetőségét. Először bővítjük a kényelmi modellt:
b45e29b9125c2ab565b5526442437686
Ezután létrehozzuk a \ Helpers \ ConvenienceCollection.php fájlalkalmazást , amely biztosítja, hogy a gyűjtemények ismeretlen függvényeinek meghívása végrehajtja a gyűjtemény összes elemének függvényét:
b45e29b9125c2ab565b5526442437686
Tehát a következő kód segítségével kimenhetjük az összes ország összes nevét, a személy összes szülőjének minden címét:
b45e29b9125c2ab565b5526442437686
De a következőhöz hasonló hívások is lehetségesek:
b45e29b9125c2ab565b5526442437686
Rendezés több oszlop szerint
A következő hívás csak hely szerint rendeződik , bár valószínűleg nem ezt kívánta:
b45e29b9125c2ab565b5526442437686
A több oszlop szerinti rendezés engedélyezéséhez kibővítjük a ConvenienceCollection-t:
b45e29b9125c2ab565b5526442437686
Ezzel több oszlop szerint rendezhetjük a gyűjteményt a:
b45e29b9125c2ab565b5526442437686
Normál válogatás
Bővítjük a ConvenienceCollection-t egy másik kiegészítő funkcióval:
b45e29b9125c2ab565b5526442437686
Most minden modellnek megadhat egy egyedi szabványos rendezési funkciót:
b45e29b9125c2ab565b5526442437686
Így válogathatunk egy gyűjteményt:
b45e29b9125c2ab565b5526442437686
Tárgynevek
Minden modell a getLabel metódust valósítja meg (a getName a modelltől függően változik):
b45e29b9125c2ab565b5526442437686
Ezzel gyorsan és egyszerűen megjelenítheti az objektum nevét. Ezután megvalósíthatja a sortByLabel segítő módszert a ConvenienceCollection alkalmazásban:
b45e29b9125c2ab565b5526442437686
Üres eredmények
Ha egy köztes lépés üres, akkor a Laravel első () és utolsó () funkciói általában nullát adnak vissza. Ezért bevezetjük a getFirst () és a getLast () elemeket, hogy a következő hívás mindig sikeres legyen:
b45e29b9125c2ab565b5526442437686
Ezzel visszaküldünk egy __empty_helpert, amelyet __x felismer:
b45e29b9125c2ab565b5526442437686