A Laravel egyik erőssége az elegáns szintaxis. Ha sok modelled és kapcsolatod van a Laravelben (az adatbázisban található sok tábla miatt), a bejárás gyakran kevésbé elegáns kóddal végződik. Idővel három kis bővítmény bizonyult számomra sikeresnek, amelyeket az alábbiakban szeretnék röviden bemutatni. Ehhez csak néhány öröklődést, mágikus módszereket és egyedi gyűjteményeket 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 hívás a fenti példában is lehetséges:
b45e29b9125c2ab565b5526442437686
Ellenőrizze az üres tárgyakat
Ha egy személy címéhez tartozó országnevet szeretnéd kiírni, gyakran a következő kódot láthatod::
b45e29b9125c2ab565b5526442437686
Ennek elkerülése érdekében beillesztjük a stringhelper könyvtárat, és egy üres osztályú speciális objektumot adunk vissza, ha nem található modell.:
b45e29b9125c2ab565b5526442437686
Ez azt jelenti, hogy a hívás sikeres volt (ebben a példában, ha talál valamit, 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 az app\Helpers\ConvenienceCollection.php fájlt, amely biztosítja, hogy amikor ismeretlen függvényeket hívunk meg a Collectionsben, a függvény a gyűjtemény összes elemére végrehajtódjon.:
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ő parancs csak helyszín szerint rendez, bár valószínűleg nem ez volt a kívánt eredmény.:
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