Unu el la fortoj de Laravel estas ĝia eleganta sintakso. Se vi havas multajn modelojn kaj rilatojn en Laravel (pro multaj tabeloj en la datumbazo), travojaĝado ofte povas finiĝi en malpli eleganta kodo. Kun la tempo, tri malgrandaj etendaĵoj pruviĝis sukcesaj por mi, kiujn mi ŝatus mallonge prezenti ĉi-sube. Por fari tion ni nur uzas iun heredaĵon, magiajn metodojn kaj kutimajn kolektojn.
Unue ni kreas novan modelon sub app \ ConvenienceModel.php:
b45e29b9125c2ab565b5526442437686
Tiam ni lasas ĉiujn modelojn heredi de nia nova ConvenienceModel:
b45e29b9125c2ab565b5526442437686
Miksu viajn proprajn funkciojn kun rilatoj
Se vi volas akiri konektitajn modelojn, vi uzas la norman sintakson por nomi ilin:
b45e29b9125c2ab565b5526442437686
Se vi nun aldonas vian propran komercan logikon, vi ŝatas uzi la (malsupran) kamelan kazan skribmanieron:
b45e29b9125c2ab565b5526442437686
Ni volas normigi la sintakson de ambaŭ variantoj. Por fari tion, ni aldonas la magian metodon __call al la Konvena Modelo:
b45e29b9125c2ab565b5526442437686
Ĉi tiu alvoko ankaŭ eblas en la supra ekzemplo:
b45e29b9125c2ab565b5526442437686
Kontrolu malplenajn objektojn
Se vi volas montri la landonomon por la adreso de persono, vi ofte vidas la jenan kodon:
b45e29b9125c2ab565b5526442437686
Por malebligi tion, ni inkluzivas la bibliotekon `stringhelper` kaj redonas specialan objekton de la malplena klaso `empty` se modelo ne estas trovita.:
b45e29b9125c2ab565b5526442437686
Ĉi tio signifas, ke la voko estas sukcesa (en ĉi tiu ekzemplo, se io estas trovita, la nomo de la lando estas eligita, en ĉiuj aliaj kazoj malplena ĉeno):
b45e29b9125c2ab565b5526442437686
Se ni ankaŭ volas pritrakti, ke la uzanto kun la ID 42 eble eĉ ne ekzistas, ni ankaŭ konstruos malgrandan helpan funkcion por ĉi tio:
b45e29b9125c2ab565b5526442437686
La sekva alvoko tiel liveras malplenan ĉenon eĉ se la uzanto tute ne ekzistas:
b45e29b9125c2ab565b5526442437686
Konvene trairu n: m-rilatojn
Fine ni volas simpligi la sekvan kodon:
b45e29b9125c2ab565b5526442437686
Por tio ni uzas la eblon de kutimaj kolektoj . Ni unue vastigas la oportunan modelon:
b45e29b9125c2ab565b5526442437686
Poste, ni kreas la dosieron app\Helpers\ConvenienceCollection.php , kiu certigas, ke kiam nekonataj funkcioj estas vokitaj en Kolektoj, la funkcio estas plenumata por ĉiuj eroj en la kolekto.:
b45e29b9125c2ab565b5526442437686
Do ni povas uzi la sekvan kodon por eligi ĉiujn nomojn de ĉiuj landoj de ĉiuj adresoj de ĉiuj gepatroj de la persono:
b45e29b9125c2ab565b5526442437686
Sed alvokoj kiel la jenaj ankaŭ eblas:
b45e29b9125c2ab565b5526442437686
Ordigi laŭ pluraj kolumnoj
La jena komando ordigas nur laŭ loko , kvankam tio verŝajne ne estis la celita rezulto.:
b45e29b9125c2ab565b5526442437686
Por ebligi ordigon laŭ pluraj kolumnoj, ni vastigas nian ConvenienceCollection:
b45e29b9125c2ab565b5526442437686
Per tio ni povas ordigi la kolekton laŭ pluraj kolumnoj kun:
b45e29b9125c2ab565b5526442437686
Norma ordigo
Ni pligrandigas la ConvenienceCollection kun alia helpa funkcio:
b45e29b9125c2ab565b5526442437686
Nun vi povas doni al ĉiu modelo individuan norman ordigan funkcion:
b45e29b9125c2ab565b5526442437686
Do ni povas ordigi kolekton per:
b45e29b9125c2ab565b5526442437686
Objektaj nomoj
Ĉiu modelo efektivigas la getLabel-metodon (getName varias laŭ la modelo):
b45e29b9125c2ab565b5526442437686
Per tio vi povas rapide kaj facile eligi la nomon de objekto. Vi povas tiam efektivigi la helpan metodon sortByLabel en la Konvenkolekto:
b45e29b9125c2ab565b5526442437686
Malplenaj rezultoj
Se meza paŝo estas malplena, la laravelaj funkcioj first () kaj last () kutime redonas nulon. Tial ni enkondukas getFirst () kaj getLast () por ke la sekva alvoko ĉiam sukcesu:
b45e29b9125c2ab565b5526442437686
Per ĉi tio ni redonas __ malplenan_helpilon, kiun __x rekonas:
b45e29b9125c2ab565b5526442437686