Një nga pikat e forta të Laravel është sintaksa e tij elegante. Nëse keni shumë modele dhe marrëdhënie në Laravel (për shkak të shumë tabelave në bazën e të dhënave), kalimi shpesh mund të përfundojë në kod më pak elegant. Me kalimin e kohës, tre zgjerime të vogla kanë rezultuar të suksesshme për mua, të cilat do të doja t'i prezantoja shkurtimisht më poshtë. Për ta bërë këtë, ne thjesht përdorim disa metoda të trashëgimisë, magjike dhe koleksione me porosi.
Së pari ne krijojmë një model të ri nën aplikacionin \ ConvenienceModel.php:
b45e29b9125c2ab565b5526442437686
Pastaj ne le të gjitha modelet trashëgojnë nga ConvenienceModel tonë të ri:
b45e29b9125c2ab565b5526442437686
Përzieni funksionet tuaja me marrëdhëniet
Nëse dëshironi të merrni modele të lidhura, përdorni sintaksën standarde për t'i thirrur ato:
b45e29b9125c2ab565b5526442437686
Nëse tani shtoni logjikën tuaj të biznesit, ju pëlqeni të përdorni shënimin e rastit të devesë:
b45e29b9125c2ab565b5526442437686
Ne duam të standardizojmë sintaksën e të dy varianteve. Për ta bërë këtë, ne shtojmë metodën magjike __thirrje në Modeli i Përshtatjes:
b45e29b9125c2ab565b5526442437686
Kjo thirrje është gjithashtu e mundur në shembullin e mësipërm:
b45e29b9125c2ab565b5526442437686
Kontrolloni objektet bosh
Nëse doni të nxirrni emrin e vendit për adresën e një personi, shpesh shihni kodin e mëposhtëm:
b45e29b9125c2ab565b5526442437686
Për ta parandaluar këtë, ne përfshijmë bibliotekën stringhelper dhe kthejmë një objekt të veçantë të klasës bosh `empty` nëse nuk gjendet një model.:
b45e29b9125c2ab565b5526442437686
Kjo do të thotë që thirrja është e suksesshme (në këtë shembull, nëse gjendet diçka, del emri i shtetit, në të gjitha rastet e tjera një varg bosh):
b45e29b9125c2ab565b5526442437686
Nëse ne gjithashtu duam të mbulojmë rastin që përdoruesi me ID 42 mund të mos ekzistojë, ne gjithashtu do të ndërtojmë një funksion të vogël ndihmës për këtë:
b45e29b9125c2ab565b5526442437686
Thirrja e mëposhtme jep kështu një varg bosh edhe nëse përdoruesi nuk ekziston fare:
b45e29b9125c2ab565b5526442437686
Kaloni lehtësisht marrëdhëniet n: m
Së fundmi, ne duam të thjeshtojmë kodin e mëposhtëm:
b45e29b9125c2ab565b5526442437686
Për këtë ne përdorim mundësinë e koleksioneve me porosi . Së pari po zgjerojmë modelin e komoditetit:
b45e29b9125c2ab565b5526442437686
Më pas, krijojmë skedarin app\Helpers\ConvenienceCollection.php , i cili siguron që kur thirren funksione të panjohura në Koleksione, funksioni ekzekutohet për të gjitha artikujt në koleksion.:
b45e29b9125c2ab565b5526442437686
Kështu që ne mund të përdorim kodin e mëposhtëm për të nxjerrë të gjithë emrat e të gjitha vendeve të të gjitha adresave të të gjithë prindërve të personit:
b45e29b9125c2ab565b5526442437686
Por thirrje si më poshtë janë gjithashtu të mundshme:
b45e29b9125c2ab565b5526442437686
Rendit sipas kolonave të shumëfishta
Komanda e mëposhtme rendit vetëm sipas vendndodhjes , megjithëse ky ndoshta nuk ishte rezultati i synuar.:
b45e29b9125c2ab565b5526442437686
Për të mundësuar klasifikimin sipas disa kolonave, ne po zgjerojmë mbledhjen tonë të komoditetit:
b45e29b9125c2ab565b5526442437686
Me këtë ne mund ta renditim koleksionin sipas disa kolonave me:
b45e29b9125c2ab565b5526442437686
Renditja standarde
Ne po zgjerojmë ConvenienceCollection me një funksion tjetër ndihmës:
b45e29b9125c2ab565b5526442437686
Tani ju mund t'i jepni secilit model një funksion individual të klasifikimit standard:
b45e29b9125c2ab565b5526442437686
Kështu që ne mund të klasifikojmë një koleksion me:
b45e29b9125c2ab565b5526442437686
Emrat e objekteve
Secili model zbaton metodën getLabel (emri i getN ndryshon në varësi të modelit):
b45e29b9125c2ab565b5526442437686
Me këtë ju mund të shfaqni shpejt dhe me lehtësi emrin e një objekti. Pastaj mund të implementoni metodën ndihmëse të sortByLabel në ConvenienceCollection:
b45e29b9125c2ab565b5526442437686
Rezultatet boshe
Nëse një hap i ndërmjetëm është bosh, funksionet e para () dhe të fundit () të Laravel kthehen zero. Prandaj ne prezantojmë getFirst () dhe getLast () në mënyrë që thirrja vijuese të ketë gjithmonë sukses:
b45e29b9125c2ab565b5526442437686
Me anë të kësaj ne sjellim përsëri një ndihmës __brazët që __x njeh:
b45e29b9125c2ab565b5526442437686