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), trairi ofte povas finiĝi per malpli eleganta kodo. Kun la paso de tempo, tri malgrandaj etendaĵoj pruvis sin por mi, kiujn mi ŝatus koncize enkonduki sube. Ni nur uzas iom da heredo, magiaj metodoj kaj kutimaj kolektoj.
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 do eblas ankaŭ en la supra ekzemplo:
b45e29b9125c2ab565b5526442437686
Kontrolu malplenajn objektojn
Se vi volas eldoni la nomon de la lando al persona adreso, vi ofte vidos la jenan kodon:
b45e29b9125c2ab565b5526442437686
Por malebligi ĉi tion, ni inkluzivas la bibliotekon stringhelper kaj redonas specialan objekton de la malplena klaso malplena se modelo ne troviĝas:
b45e29b9125c2ab565b5526442437686
Ĉi tio ankaŭ sukcesigas la alvokon (en ĉi tiu ekzemplo, se io troviĝas, 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 voki nekonatajn funkciojn en kolektoj plenumas la funkcion 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 sekva alvoko nur ordigas laŭ loko , kvankam probable vi ne volis tion:
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