Laravel-ը հայտնի PHP շրջանակ է, որն ապահովում է բազմաթիվ օգտակար հատկություններ մշակողներին: Այդ հատկանիշներից մեկը տվյալների հավաքածուների հետ աշխատելու ունակությունն է: Հավաքածուները Laravel-ում նման են զանգվածների, բայց դրանք ապահովում են լրացուցիչ ֆունկցիոնալություն և ավելի արտահայտիչ են: Laravel-ը նաև թույլ է տալիս ծրագրավորողներին ստեղծել անհատական հավաքածուներ իրենց մոդելների համար:
Այս ձեռնարկում մենք կուսումնասիրենք, թե ինչպես ստեղծել հատուկ հավաքածուներ Laravel մոդելների համար: Մենք կանցնենք մաքսային հավաքածուի սահմանման գործընթացին, ինչպես օգտագործել այն ձեր կոդում և որոշ օրինակներ, թե ինչպես օգտագործել հատուկ հավաքածուները ձեր հավելվածում:
Պատվերով հավաքածուի սահմանում
Հատուկ հավաքածուն դաս է, որն ընդլայնում է Illuminate\Database\Eloquent\Collection
դասը: Այս դասը տալիս է տվյալների հավաքածուների հետ աշխատելու շատ գործառույթներ, ներառյալ տվյալների զտման, տեսակավորման և մանիպուլյացիայի մեթոդները:
Մոդելի համար հատուկ հավաքածու սահմանելու համար դուք պետք է ստեղծեք նոր դաս, որն ընդլայնում է Illuminate\Database\Eloquent\Collection
դասը: Ահա User
մոդելի համար հատուկ հավաքածուի օրինակ.
namespace App\Collections; use Illuminate\Database\Eloquent\Collection; class UserCollection extends Collection { // custom methods can be defined here }
Այս օրինակում մենք ստեղծել ենք նոր դաս, որը կոչվում է UserCollection
, որն ընդլայնում է Illuminate\Database\Eloquent\Collection
դասը: Այս նոր դասը կարող է օգտագործվել User
օբյեկտների հավաքածուների հետ աշխատելու հատուկ մեթոդներ սահմանելու համար:
Օգտագործելով հատուկ հավաքածու ձեր ծածկագրում
Ձեր մոդելի համար հատուկ հավաքածու սահմանելուց հետո կարող եք այն օգտագործել ձեր կոդում՝ զանգահարելով ձեր մոդելի setCollection
մեթոդը: Ահա մի օրինակ, թե ինչպես օգտագործել UserCollection
դասը, որը մենք սահմանել ենք ավելի վաղ.
use App\Models\User; use App\Collections\UserCollection; $users = User::all(); $collection = new UserCollection($users); $collection->customMethod(); // call custom method defined in UserCollection class
Այս օրինակում մենք վերցրել ենք բոլոր օգտվողներին տվյալների բազայից և ստեղծել UserCollection
դասի նոր օրինակ՝ անցնելով $users
զանգվածում որպես արգումենտ: Այնուհետև մենք կարող ենք զանգահարել ցանկացած հատուկ մեթոդ, որը մենք սահմանել ենք UserCollection
դասում:
Պատվերով հավաքածուների օգտագործման օրինակներ
Ահա մի քանի օրինակներ, թե ինչպես կարող եք օգտագործել հատուկ հավաքածուներ ձեր հավելվածում.
Օրինակ 1. Օգտագործողների զտում ըստ տարիքի
Ենթադրենք, դուք ունեք User
մոդել՝ age
հատկանիշով: Դուք կարող եք սահմանել հատուկ մեթոդ ձեր UserCollection
դասում, որը զտում է օգտվողներին ըստ տարիքի.
class UserCollection extends Collection { public function filterByAge($age) { return $this->filter(function ($user) use ($age) { return $user->age == $age; }); } }
Այնուհետև կարող եք օգտագործել այս մաքսային մեթոդը ձեր կոդի մեջ այսպես.
$users = User::all(); $collection = new UserCollection($users); $filtered = $collection->filterByAge(30);
Սա կվերադարձնի նոր հավաքածու, որը պարունակում է միայն 30 տարեկան օգտվողներին:
Օրինակ 2. Օգտագործողների տեսակավորում ըստ անունների
Ենթադրենք, դուք ունեք User
մոդել՝ name
հատկանիշով: Դուք կարող եք սահմանել հատուկ մեթոդ ձեր UserCollection
դասում, որը տեսակավորում է օգտվողներին ըստ անունների՝
class UserCollection extends Collection { public function sortByName() { return $this->sortBy('name'); } }
Այնուհետև կարող եք օգտագործել այս մաքսային մեթոդը ձեր կոդի մեջ այսպես.
$users = User::all(); $collection = new UserCollection($users); $sorted = $collection->sortByName();
Սա կվերադարձնի նոր հավաքածու, որը պարունակում է օգտվողներին տեսակավորված ըստ անունների:
Օրինակ 3. Օգտագործողների խմբավորում ըստ
Ենթադրենք, դուք ունեք User
մոդել՝ city
հատկանիշով: Դուք կարող եք սահմանել հատուկ մեթոդ ձեր UserCollection
դասում, որը խմբավորում է օգտվողներին ըստ քաղաքների.
class UserCollection extends Collection { public function groupByCity() { return $this->groupBy('city'); } }
Այնուհետև կարող եք օգտագործել այս մաքսային մեթոդը ձեր կոդի մեջ այսպես.
$users = User::all(); $collection = new UserCollection($users); $grouped = $collection->groupByCity();
Սա կվերադարձնի նոր հավաքածու, որը խմբավորում է օգտատերերին ըստ իրենց քաղաքի:
Օրինակ 4. Օգտագործողի հատկանիշների քարտեզագրում
Ենթադրենք, դուք ունեք User
մոդել՝ name
և email
հատկանիշով: Դուք կարող եք սահմանել հատուկ մեթոդ ձեր UserCollection
դասում, որը օգտատերերին քարտեզագրում է զանգվածի մեջ միայն նրանց name
և email
հատկանիշներով.
class UserCollection extends Collection { public function mapToNameAndEmail() { return $this->map(function ($user) { return [ 'name' => $user->name, 'email' => $user->email, ]; }); } }
Այնուհետև կարող եք օգտագործել այս մաքսային մեթոդը ձեր կոդի մեջ այսպես.
$users = User::all(); $collection = new UserCollection($users); $mapped = $collection->mapToNameAndEmail();
Ենթադրենք, դուք ունեք User
մոդել՝ city
հատկանիշով: Դուք կարող եք սահմանել հատուկ մեթոդ ձեր UserCollection
դասում, որը խմբավորում է օգտվողներին ըստ քաղաքների.
class UserCollection extends Collection { public function groupByCity() { return $this->groupBy('city'); } }
Այնուհետև կարող եք օգտագործել այս մաքսային մեթոդը ձեր կոդի մեջ այսպես.
$users = User::all(); $collection = new UserCollection($users); $grouped = $collection->groupByCity();
Սա կվերադարձնի նոր հավաքածու, որը խմբավորում է օգտատերերին ըստ իրենց քաղաքի:
Օրինակ 4. Օգտագործողի հատկանիշների քարտեզագրում
Ենթադրենք, դուք ունեք User
մոդել՝ name
և email
հատկանիշով: Դուք կարող եք սահմանել հատուկ մեթոդ ձեր UserCollection
դասում, որը օգտատերերին քարտեզագրում է զանգվածի մեջ միայն նրանց name
և email
ատրիբուտներով.
class UserCollection extends Collection { public function mapToNameAndEmail() { return $this->map(function ($user) { return [ 'name' => $user->name, 'email' => $user->email, ]; }); } }
Այնուհետև կարող եք օգտագործել այս մաքսային մեթոդը ձեր կոդի մեջ այսպես.
$users = User::all(); $collection = new UserCollection($users); $mapped = $collection->mapToNameAndEmail();
Սա կվերադարձնի նոր հավաքածու, որը պարունակում է զանգված՝ յուրաքանչյուր օգտագործողի միայն name
և email
հատկանիշներով:
Եզրակացություն
Այս ձեռնարկում մենք ուսումնասիրել ենք, թե ինչպես ստեղծել հատուկ հավաքածուներ Laravel մոդելների համար: Մենք անցել ենք հատուկ հավաքածու սահմանելու գործընթաց, ինչպես օգտագործել այն ձեր կոդում և տրամադրել ենք որոշ օրինակներ, թե ինչպես օգտագործել հատուկ հավաքածուները ձեր հավելվածում:
Պատվերով հավաքածուները կարող են հզոր գործիք լինել ձեր Laravel հավելվածում՝ ապահովելով լրացուցիչ ֆունկցիոնալություն և արտահայտիչություն ձեր կոդը: Այս ձեռնարկում ներկայացված օրինակներով և հասկացություններով դուք պետք է լավ լինեք ձեր սեփական Laravel մոդելների համար անհատական հավաքածուներ ստեղծելու ճանապարհին: