مقدمة إلى Laravel Collections
المقدمة
Laravel Collections هي سلسلة من فئات PHP توفر واجهة برمجية قوية وسهلة الاستخدام للعمل مع المصفوفات والمجموعات من البيانات. تتميز المجموعات بأنها سلسة وسهلة الاستخدام، حيث توفر مجموعة من الطرق المتسلسلة (Chaining Methods) التي تسهل معالجة البيانات بفعالية. باستخدام المجموعات، يمكنك أداء عمليات شائعة مثل التصفية، التعيين، والتجميع بسهولة وبكتابة كود أنظف وأكثر قراءة.
الخطوة 1: ما هي Laravel Collections؟
المجموعات في Laravel هي عبارة عن تغليف (Wrapper) حول المصفوفات (Arrays) توفر واجهة سلسة وقوية للتعامل مع البيانات. يتم إنشاء كائنات المجموعات عادةً من استعلامات قاعدة البيانات، ولكن يمكنك أيضًا إنشاؤها مباشرةً من مصفوفات PHP. يمكن استخدام المجموعات لتطبيق العديد من العمليات الشائعة مثل التصفية، الترتيب، التجميع، وغيرها من العمليات بسهولة.
الخطوة 2: إنشاء واستخدام المجموعات
لإنشاء مجموعة في Laravel، يمكنك استخدام الدالة المساعدة collect(). لنقم بإنشاء مجموعة بسيطة من الأرقام واستخدام بعض الطرق الأساسية:
<?php
use Illuminate\Support\Collection;
// إنشاء مجموعة من الأرقام
$numbers = collect([1, 2, 3, 4, 5]);
// استخدام طريقة average() لحساب المتوسط
$average = $numbers->average();
echo "المتوسط: " . $average . "\n"; // النتيجة: 3
// استخدام طريقة sum() لحساب المجموع
$sum = $numbers->sum();
echo "المجموع: " . $sum . "\n"; // النتيجة: 15
في هذا المثال، نستخدم collect() لإنشاء مجموعة من الأرقام، ثم نطبق طريقتين أساسيتين هما average() لحساب المتوسط وsum() لحساب المجموع.
الخطوة 3: تطبيق عمليات على المجموعات
المجموعات توفر العديد من الطرق لمعالجة البيانات. لنلقي نظرة على بعض الطرق الأكثر استخدامًا:
1. التصفية باستخدام filter()
يمكنك استخدام filter() لتصفية العناصر في مجموعة بناءً على شرط معين:
$filtered = $numbers->filter(function ($value) {
return $value > 2;
});
echo "الأرقام الأكبر من 2: " . implode(", ", $filtered->all()) . "\n"; // النتيجة: 3, 4, 5
في هذا المثال، نستخدم filter() للاحتفاظ بالعناصر التي تكون أكبر من 2 فقط.
2. التعيين باستخدام map()
تسمح لك طريقة map() بتطبيق دالة معينة على كل عنصر في المجموعة:
$squared = $numbers->map(function ($value) {
return $value * $value;
});
echo "الأرقام المربعة: " . implode(", ", $squared->all()) . "\n"; // النتيجة: 1, 4, 9, 16, 25
في هذا المثال، نستخدم map() لتربيع كل عنصر في المجموعة.
3. التجميع باستخدام groupBy()
تسمح لك طريقة groupBy() بتجميع العناصر في مجموعة بناءً على قيمة معينة:
$users = collect([
['name' => 'أحمد', 'department' => 'IT'],
['name' => 'سارة', 'department' => 'HR'],
['name' => 'خالد', 'department' => 'IT'],
]);
$grouped = $users->groupBy('department');
echo "المستخدمون حسب القسم:\n";
foreach ($grouped as $department => $group) {
echo $department . ": " . implode(", ", $group->pluck('name')->all()) . "\n";
}
// النتيجة:
// IT: أحمد, خالد
// HR: سارة
في هذا المثال، نستخدم groupBy() لتجميع المستخدمين حسب القسم.
الخطوة 4: تحويل المجموعات إلى مصفوفات
في بعض الأحيان، قد تحتاج إلى تحويل مجموعة إلى مصفوفة عادية. يمكنك استخدام طريقة toArray() لهذا الغرض:
$array = $numbers->toArray();
print_r($array); // النتيجة: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
الآن، أصبحت المجموعة عبارة عن مصفوفة PHP عادية يمكنك استخدامها بالطريقة التي تريدها.
الخطوة 5: استخدام المجموعات مع استعلامات Eloquent
عندما تستخدم استعلامات Eloquent في Laravel، فإن النتيجة التي تحصل عليها هي في العادة مجموعة (Collection). يمكنك استخدام جميع طرق المجموعات مباشرة على النتائج التي تم جلبها من قاعدة البيانات. على سبيل المثال:
$products = App\Models\Product::all();
// تطبيق filter() على النتائج
$expensiveProducts = $products->filter(function ($product) {
return $product->price > 100;
});
echo "المنتجات الأغلى من 100:\n";
foreach ($expensiveProducts as $product) {
echo $product->name . " - $" . $product->price . "\n";
}
في هذا المثال، نستخدم طريقة all() لجلب جميع المنتجات، ثم نطبق filter() على النتيجة لتحديد المنتجات التي يزيد سعرها عن 100.
الخاتمة
Laravel Collections هي أداة قوية ومرنة تجعل العمل مع البيانات أكثر سهولة وكفاءة. باستخدام المجموعات، يمكنك تحسين الكود الخاص بك ليصبح أكثر وضوحًا وقابلية للصيانة، مما يوفر عليك الكثير من الجهد والوقت في كتابة التعليمات البرمجية. استمر في استكشاف المزيد من ميزات Laravel لتعزيز تطبيقاتك وتحسين أدائها.
لمزيد من المعلومات، يمكنك زيارة المستندات الرسمية للارافيل.

اترك تعليقاً