Një nga pikat e forta të Laravel është sintaksa 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), përshkimi shpesh mund të përfundojë në një kod më pak elegant. Me kalimin e kohës, tre shtesa të vogla kanë provuar veten për mua, të cilat do t'i prezantoj shkurtimisht më poshtë. Ne thjesht përdorim disa trashëgimi, metoda magjike dhe koleksione të personalizuara.
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 dëshironi të jepni emrin e vendit në adresën e një personi, shpesh do të shihni kodin e mëposhtëm:
b45e29b9125c2ab565b5526442437686
Për ta parandaluar këtë, ne përfshijmë bibliotekën stringhelper dhe kthejmë bosh një objekt të veçantë të klasës bosh nëse nuk gjendet një model:
b45e29b9125c2ab565b5526442437686
Kjo gjithashtu e bën thirrjen të suksesshme (në këtë shembull, nëse diçka gjendet, emri i vendit del, 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
Pastaj krijojmë aplikacionin e skedarit \ Ndihmësit \ ConvenienceCollection.php , i cili siguron që thirrja e funksioneve të panjohura në koleksione ekzekuton funksionin për të gjithë 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
Thirrja e mëposhtme klasifikon vetëm sipas vendndodhjes , megjithëse kjo ndoshta nuk ishte ajo që dëshironi:
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