به نظر من Eloquent لاراول یک ابزار عالی در لاراوله - احتمالا نیازی به تاکیید کردن من روی این مسئله نیست چون همه این مسئله رو میدونن . امروز میخوام لیستی از متدهای Eloquent رو در این پست معرفی کنم که کمتر شناخته شدن یا شما تا حالا باهاشون کار نکردید چون نمیدونستید چیکار میکنن . شما میتونید با این متدها اطلاعات رو فیلتر کنید ، تیکه تیکه کنید یا تغییر بدید . به من اجازه بدید تا تک تک این متدها رو با شما برسی کنم .
در قدم اول برای مثال شما کدی مثل کد زیر رو دارید که اطلاعاتی رو بر میگردونه :
$books = Book::where('release_year', 2015)->get();
در اینجا $books یک collection ، که اساسا شامل یک آرایه با ویژگی های اضافیه .
نتیجه کد بالا میتونه بصورت زیر باشه :
[
['title' => 'Lean Startup', 'price' => 10],
['title' => 'The One Thing', 'price' => 15],
['title' => 'Laravel: Code Bright', 'price' => 20],
['title' => 'The 4-Hour Work Week', 'price' => 5],
]
خب حالا چه کاری میتونید با این آرایه انجام بدید ؟ نکته مهم اینکه : شما فقط یکبار با کد بالا اطلاعات رو از دیتابیس دریافت میکنید و تمام کارهای که با متد های زیر انجام میدید به اصطلاح بصورت "offline" انجام میگیره و ارتباطی با دیتابیس نداره .
1. avg
اگر شما بخواهید میانگین قیمت کتاب ها را مقایسه کنید . احتیاج نیست دوباره با یک query خواص از دیتابیس میانگین بگیرین به راحتی با متد avg میتونید اینکارو به صورت زیر انجام بدید
$average_price = $books->avg('price'); // in our case, 12.5
2. chunk
اگر شما بخواهید نتایج رو به بخش های مساوی تقیسم کنید . برای مثال به ستون های مختلف ، میتونید از این متد بصورت زیر استفاده کنید
$chunks = $books->chunk(2);
$chunks->toArray();
نتیجه کد بالا بصورت زیره :
[
[
['title' => 'Lean Startup', 'price' => 10],
['title' => 'The One Thing', 'price' => 15]
],
[
['title' => 'Laravel: Code Bright', 'price' => 20],
['title' => 'The 4-Hour Work Week', 'price' => 5],
]
]
3. contains
این یک متد سادست ، کارش اینکه برای شما برسی میکنه ایا مقداری در مجموعه وجود داره یا خیر .
$books->contains('title', 'The One Thing'); // TRUE
$books->contains('title', 'The Second Thing'); // FALSE
4. every
متد دیگری برای تکه سازی collection به ستون های مختلف . در اینجا متد every اطلاعات رو بصورت یکی دی میون بر میگردونه .
$books->every(2); // every 2nd element
نتیجه :
[
['title' => 'Lean Startup', 'price' => 10],
['title' => 'Laravel: Code Bright', 'price' => 20],
]
5. filter
این متد برای فیلتر کردن نتیجه ها استفاده میشه که بصورت مفصل در این مقاله ( فیلتر کردن نتایج query ها با شروط مختلف ) توضیح داده شده است .
$expensive_books = $books->filter(function ($book) {
return $book->price > 10;
});
6. forget
این متد زمانی مورد استفاده قرار میگیره که شما قصد دارید از شر یک ستون خلاص بشید و اونو حذف کنید .
$books->forget('price');
نتیجه :
[
['title' => 'Lean Startup'],
['title' => 'The One Thing'],
['title' => 'Laravel: Code Bright'],
['title' => 'The 4-Hour Work Week'],
]
7. implode
این متد شبیه تابع خود PHP به اسم implode() . با استفاده از این متد میتونید یک ستون رو بصورت رشته بهم متصل کنید .
$books->implode('title', ', ');
نتیجه :
'Lean Startup, The One Thing, Laravel: Code Bright, The 4-Hour Work Week'
8. keyBy
این متد یک متد واقعا کاربردی برای استفاده از foreach . در واقع شما با این متد میتونید یک collection رو با انتخاب یک کلمه کلیدی به یک ارایه منتقل کنید مثل زیر :
$by_key = $books->keyBy('title');
$by_key->all();
نتیجه :
[
'Lean Startup' => ['title' => 'Lean Startup', 'price' => 10],
'The One Thing' => ['title' => 'The One Thing', 'price' => 15],
'Laravel: Code Bright' => ['title' => 'Laravel: Code Bright', 'price' => 20],
'The 4-Hour Work Week' => ['title' => 'The 4-Hour Work Week', 'price' => 5],
]
9. map
اگر شما میخواید که یک مقدار از یک collection رو برگردونید و اعملیاتی روش انجام بدید و دوباره بصورت collection در بیارید میتونید از این متد استفاده کنید . و دیگه احتیاجی به foreach هم نیست .
$discounted_books = $books->map(function ($item) {
return ['title' => $item->title, 'price' => $item->price / 2];
});
نتیجه :
[
['title' => 'Lean Startup', 'price' => 5],
['title' => 'The One Thing', 'price' => 7.5],
['title' => 'Laravel: Code Bright', 'price' => 10],
['title' => 'The 4-Hour Work Week', 'price' => 2.5],
]
10. pluck
این متد به راحتی شما اجازه میده فقط یک ستون رو خارج کنید و نمایش بدید .
$prices = $books->pluck('price');
$plucked->all();
نتیجه :
[10, 15, 20, 5]
خب این بود از 10 متد کمتر شناخته شده collection لاراول اما تعداد متد های که برای کار با collection ها در دسترستونن هست خیلی بیشتر از این حرفاست . شما میتونید با مراجعه به داکیومنت لاراول این متدها رو همراه با مثال های سادشون مشاهده کنید و در صورت لزوم در پروژهاتون ازشون استفاده کنید .
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید