Ruzoj por Laravel Elokventaj Rilatoj

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

Reen