Laravel- ի ուժեղ կողմերից մեկը նրա էլեգանտ շարահյուսությունն է: Եթե Laravel- ում ունեք շատ մոդելներ և փոխհարաբերություններ (շտեմարանում առկա բազմաթիվ աղյուսակների պատճառով), շրջելը կարող է հաճախ ավարտվել պակաս էլեգանտ կոդով: Ամանակի ընթացքում ինձ համար իրենց ապացուցել են երեք փոքր ընդարձակումներ, որոնք հակիրճ կներկայացնեմ ստորև: Մենք պարզապես օգտագործում ենք ժառանգության, կախարդական որոշ մեթոդներ և մաքսային հավաքածուներ:
Նախ մենք ստեղծում ենք նոր մոդել \ ConvenienceModel.php հավելվածի ներքո:
b45e29b9125c2ab565b5526442437686
Դրանից հետո մենք թույլ ենք տալիս, որ բոլոր մոդելները ժառանգեն մեր նոր ConvenienceModel- ից:
b45e29b9125c2ab565b5526442437686
Խառնել ձեր սեփական գործառույթները հարաբերությունների հետ
Եթե ցանկանում եք ստանալ կապակցված մոդելներ, դրանք զանգահարելու համար օգտագործում եք ստանդարտ շարահյուսություն:
b45e29b9125c2ab565b5526442437686
Եթե այժմ ավելացնեք ձեր սեփական բիզնեսի տրամաբանությունը, ապա ցանկանում եք օգտագործել ուղտի տակի (ստորին) նշումը:
b45e29b9125c2ab565b5526442437686
Մենք ուզում ենք ստանդարտացնել երկու տարբերակների շարահյուսությունը: Դա անելու համար մենք ավելացնում ենք __ զանգի կախարդական մեթոդը ConvenienceModel- ին:
b45e29b9125c2ab565b5526442437686
Ուստի այս կոչը հնարավոր է նաև վերոնշյալ օրինակում:
b45e29b9125c2ab565b5526442437686
Ստուգեք դատարկ առարկաները
Եթե ցանկանում եք երկրի անունը դուրս բերել անձնական հասցե, ապա հաճախ կտեսնեք հետևյալ կոդը:
b45e29b9125c2ab565b5526442437686
Կանխել դա, մենք ներառում է stringhelper գրադարան եւ վերադարձնել հատուկ օբյեկտ է դատարկ դասի դատարկ, եթե մոդելը չի գտնվել:
b45e29b9125c2ab565b5526442437686
Սա նաև հաջող է դարձնում զանգը (այս օրինակում, եթե ինչ-որ բան գտնվի, երկրի անունը դուրս է գալիս, մնացած բոլոր դեպքերում ՝ դատարկ տող):
b45e29b9125c2ab565b5526442437686
Եթե մենք նաև ուզում ենք լուսաբանել այն դեպքը, երբ ID 42 ունեցող օգտվողը կարող է նույնիսկ գոյություն չունենալ, մենք նաև դրա համար կկառուցենք օգնականի փոքր գործառույթ::
b45e29b9125c2ab565b5526442437686
Հետևյալ զանգը այսպիսով տալիս է դատարկ տող, նույնիսկ եթե օգտագործողն ընդհանրապես գոյություն չունի:
b45e29b9125c2ab565b5526442437686
Հարմարավետորեն անցեք n: m հարաբերությունները
Վերջապես, մենք ուզում ենք պարզեցնել հետևյալ կոդը:
b45e29b9125c2ab565b5526442437686
Դրա համար մենք օգտագործում ենք հարմարեցված հավաքածուների հնարավորություն: Մենք նախ ընդլայնում ենք հարմարության մոդելը:
b45e29b9125c2ab565b5526442437686
Դրանից հետո մենք ստեղծում ենք \ Helpers \ ConvenienceCollection.php ֆայլերի ծրագիրը , որն ապահովում է, որ հավաքածուներում անհայտ գործառույթներ կանչելը կատարում է հավաքածուի բոլոր իրերի գործառույթը:
b45e29b9125c2ab565b5526442437686
Այսպիսով, մենք կարող ենք օգտագործել հետևյալ ծածկագիրը `բոլոր երկրների բոլոր անունները դուրս բերելու համար` անձի բոլոր ծնողների հասցեները:
b45e29b9125c2ab565b5526442437686
Բայց հետևյալի նման զանգեր նույնպես հնարավոր են:
b45e29b9125c2ab565b5526442437686
Դասավորել ըստ բազմաթիվ սյունակների
Հետևյալ զանգը տեսակավորում է միայն ըստ գտնվելու վայրի , չնայած դա երևի ձեր ուզածը չէր:
b45e29b9125c2ab565b5526442437686
Մի քանի սյունակների տեսակավորումն ապահովելու համար մենք ընդլայնում ենք մեր հարմարավետության հավաքածուն:
b45e29b9125c2ab565b5526442437686
Դրանով մենք կարող ենք հավաքածուն դասավորել ըստ մի քանի սյունակների հետ:
b45e29b9125c2ab565b5526442437686
Ստանդարտ տեսակավորում
Մենք ընդլայնում ենք ConvenienceCollection- ը `մեկ այլ օժանդակ գործառույթով:
b45e29b9125c2ab565b5526442437686
Այժմ յուրաքանչյուր մոդելի կարող եք տալ անհատական ստանդարտ տեսակավորման գործառույթ:
b45e29b9125c2ab565b5526442437686
Այսպիսով, մենք կարող ենք տեսակավորել հավաքածուն:
b45e29b9125c2ab565b5526442437686
Օբյեկտների անուններ
Յուրաքանչյուր մոդել իրականացնում է getLabel մեթոդը (getName- ը տատանվում է `կախված մոդելից):
b45e29b9125c2ab565b5526442437686
Դրանով դուք կարող եք արագ և հեշտությամբ ցուցադրել օբյեկտի անունը: Դրանից հետո դուք կարող եք իրականացնել sortByLabel օգնականի մեթոդը ConvenienceCollection- ում:
b45e29b9125c2ab565b5526442437686
Դատարկ արդյունքներ
Եթե միջանկյալ քայլը դատարկ է, Laravel- ի գործառույթները առաջին () և վերջին () սովորաբար վերադառնում են զրոյի: Այդ պատճառով մենք ներմուծում ենք getFirst () և getLast () այնպես, որ հետևյալ զանգը միշտ հաջողվի:
b45e29b9125c2ab565b5526442437686
Այսպիսով, մենք հետ ենք վերադարձնում __ դատարկ_ օգնական, որը __x- ն ճանաչում է:
b45e29b9125c2ab565b5526442437686