تفصيل المقال
15 طريقة رائعة لمجموعات Laravel.
استكشف المقال كاملاً ضمن تدفق قراءة منظم وفهرس محتويات.
15 طريقة رائعة لمجموعات Laravel. عند الاستعلام عن قاعدة بيانات في Laravel Eloquent، يتم إرجاع النتيجة دائمًا كمجموعات. المجموعات عبارة عن تجريد يحتوي على طرق مفيدة جدًا لتسهيل العمل مع مجموعات البيانات. باستخدام المجموعات، يمكنك تصفية البيانات، أو ربط المصفوفات لمفتاح واحد محدد، أو إجراء عمليات حسابية مختلفة. في هذه المقالة، سألقي نظرة على الطرق الموجودة في مجموعات Laravel – قوتها وفائدتها الكاملة. وظهرت فكرة هذه المقالة بعد أن تم إنشاء مقال حول العمل مع المساعدين الرئيسيين لإطار العمل.
بالمناسبة، المجموعات ليست جزءًا خاصًا من Eloquent. ويمكن أيضًا استخدامها بشكل منفصل، مع مجموعة البيانات الخاصة بها. لإنشاء مجموعة، يمكنك ببساطة استدعاء المساعد collect() لتجاوز مصفوفة البيانات الخاصة بك كوسيطة. جميع الطرق المذكورة أدناه قابلة للتطبيق على مجموعات Eloquent ومجموعاتك بنفس القدر.
لنتظاهر بأن لديك نموذج مشروع. وتحتاج إلى العثور على جميع المشاريع التي تساوي فيها المكانة النجاح…
$projects = Project::where(‘status’, ‘success’)->get();
من خلال تشغيل هذا الكود، ستحصل على مجموعة من الكائنات من نماذج المشروع… المجموعة عبارة عن فئة إطارية تستخدم المصفوفات الأصلية داخليًا وتضيف الكثير من الوظائف الإضافية إليها.
كان هذا مثالاً لكيفية الحصول على نموذج من Eloquent، ولكن لإنشاء مجموعتك الخاصة، ما عليك سوى استدعاء المساعد للجمع() وتمرير البيانات إليه.
$projects = Project::where(‘status’, ‘success’)->get();
في الواقع، المصفوفة $dataabove هي تمثيل لبيانات النموذج Project. في هذه المقالة، سأستخدم هذه المصفوفة المحددة من أجل الوضوح. لكن يجب أن تتذكر أن جميع العمليات التي سأعرضها يتم تطبيقها على مجموعات Eloquent بنفس القدر على المجموعات التي تم إنشاؤها بشكل صريح.
هذه هي مدى سهولة إنشاء المجموعات. ستغطي هذه المقالة طرق التجميع الأكثر استخدامًا. يمكنك الاطلاع على قائمة بجميع الطرق المتاحة في الوثائق الرسمية.
عندما نستخدم أساليب التجميع Eloquent، فإنها لا تستعلم عن قاعدة البيانات. يتم تنفيذ جميع العمليات باستخدام البيانات التي تم الحصول عليها مسبقًا من قاعدة البيانات. يتم أولاً استرداد جميع النتائج وقاعدة البيانات، ثم يتم إنشاء مجموعة بناءً على البيانات المستلمة، وفي هذه المرحلة، نستخدم بالفعل طرقًا للعمل مع هذه البيانات، بالفعل دون أي استفسارات في قاعدة البيانات.
- الفلتر ()
- البحث ()
- القطعة ()
- تفريغ ()
- الرمز البريدي ()
- whereNotIn ()
- الحد الأقصى ()
- اقتلع ()
- كل ()
- انقر على ()
- الأنبوب ()
- يحتوي على ()
- انس ()
- المتوسط ()
الفلتر ()
الطريقة filter() هي إحدى الطرق الأكثر فائدة في مجموعات Laravel، والتي تسمح لك بتصفية البيانات من مجموعة عن طريق رد الاتصال. تُرجع هذه الطريقة فقط البيانات التي أعاد رد الاتصال إليها قيمة true ، وستتم إزالة بقية البيانات من المجموعة. تقوم الطريقة filter() بإرجاع كائن مجموعة جديد بناءً على البيانات التي تمت تصفيتها ولكنها لا تقوم بتعديل بيانات الكائن الأصلي.
يُسمى هذا النمط النموذج الأولي، وهو لا يغير البيانات الأصلية، ولكنه يُرجع مثيلًا جديدًا للكائن لكل استدعاء أسلوب. ونتيجة لذلك، يمكنك الوصول إلى كل من البيانات الأصلية والبيانات التي تمت تصفيتها/تعديلها. إذا لم يتم مراعاة المبدأ من هذا النمط، فستعمل دائمًا مع كائن واحد، وعندما تتغير البيانات، ستتغير نفس البيانات في جميع الأماكن التي يتم استخدامها فيها.
يأخذ عامل رد الاتصال للأسلوب() معلمتين: $value و $key:
$result = $collection->filter(function($value, $key) {
return $value[‘status’] === ‘success’;
})->all();
تقوم الطريقة all() بإرجاع مصفوفة تم الحصول عليها بعد تطبيق عامل التصفية. بعد تنفيذ الكود أعلاه، حصلنا على الكائن التالي:
بحث ()
الطريقة هي search() المستخدمة للبحث في المجموعة بقيمة معينة. إذا كانت هذه القيمة موجودة في المجموعة، فسيتم إرجاع مفتاح هذه القيمة. إذا لم يتم العثور على تطابق، فسيتم إرجاعه كاذبًا.
$collection = Collect([‘Sergey’, ‘Alexander’, ‘Denis’, ‘Vasiliy’]);
$result = $collection->search(‘Dima’); // خطأ
$result = $collection->search(‘Alexander’); // 1
بشكل افتراضي، يتم إجراء عمليات البحث باستخدام مقارنة فضفاضة. يمكنك تمرير قيمة true باعتبارها الوسيطة الثانية لهذه الطريقة لإجراء مقارنة صارمة.
أيضًا، بالإضافة إلى المقارنة البدائية للقيم، يمكنك تمرير رد اتصال search() إلى الطريقة. ونتيجة لذلك، بعد تنفيذ الطريقة، سيتم إرجاع مفتاح القيمة الأولى التي اجتازت الفحص:
$result = $collection->search(function($value, $key) {
return strlen($value) === 6;
}); // 0
القطعة ()
يتم استخدام الطريقة chunk() لتقسيم مجموعة إلى عدة مجموعات أصغر بحجم معين. تُستخدم هذه التقنية غالبًا لعرض المجموعة على شكل شبكة.
$collection = Collect([‘Sergey’, ‘Alexander’, ‘Denis’, ‘Vasiliy’]);
قطع $ = $collection->chunk(2);
$result = $chunks->toArray();
ونتيجة لذلك، لدينا نتيجة النموذج:
وهذه هي النتيجة إذا قمت بتطبيق هذه الطريقة على المصفوفة الأصلية مع المشاريع:
تفريغ ()
تقوم الطريقة dump() بطباعة معلومات حول البيانات الموجودة في المجموعة الحالية. يعد هذا مفيدًا لتصحيح الأخطاء أو عرض محتوى المجموعة في أي مكان في التطبيق الخاص بك.
مجموعة $
->whereIn(‘id’, [1, 3])
->dump();
الخريطة ()
الطريقة عبارة عن map() تُستخدم للتكرار على كل عنصر من العناصر. تستخدم هذه الطريقة kalbek كوسيطة، والتي تحصل على القيمة وقيمة المفتاح، المفتاح. يتمتع رد الاتصال هذا بالقدرة على تعديل البيانات وإرجاع الإصدارات المعدلة من البيانات. ونتيجة لذلك، سيتم إرجاع مجموعة جديدة من بياناتك، مع مراعاة التعديلات التي تم إجراؤها.
&نبسب;
$modified = $collection->map(function($value, $key) {
$value[‘id’] += 10;
إرجاع قيمة $;
});
$result = $modified->all();
ونتيجة لذلك نحصل على الجواب التالي:
الرمز البريدي ()
تضيف الطريقة zip() قيم المصفوفة التي تم تمريرها إلى بيانات المجموعة. ستتم إضافة القيم التي تمررها في نفس فهرس قيمة المجموعة، مما يعني أنه سيتم دمج القيمة الأولى للمصفوفة التي تم تمريرها مع القيمة الأولى من المجموعة.
$zipped = $collection->zip([10, 20, 33]);
$result = $zipped->all();
وستكون النتيجة هكذا:
وهذا كل ما يفعله. بالطبع، تعمل هذه الطريقة بشكل أفضل عند إضافة البيانات إلى مصفوفة عادية، بدلاً من المصفوفة الترابطية. إذا كان عدد العناصر في المصفوفة التي تم تمريرها أقل من عدد العناصر في المجموعة، فسيقوم Laravel بإضافة العناصر الفارغة المفقودة إلى نهاية المجموعة. أيضًا، إذا كان عدد العناصر في المصفوفة أكبر من عدد العناصر في المجموعة، فسيضيف Laravel قيمة خالية لكل عنصر في المجموعة، بعد العنصر الأخير.
WhereNotIn ()
يمكنك استخدام الطريقة whereNotIn() لتصفية المجموعة حسب قيمة المفتاح غير الموجودة في المجموعة. هذه الطريقة هي العكس تمامًا للطريقة whereIn(). بالإضافة إلى ذلك، تستخدم هذه الطريقة مقارنة فضفاضة ==عند مطابقة القيم.
على سبيل المثال، للحصول على جميع القيم من مجموعة، باستثناء السجلات ذات المعرفين 2 و3:
قيم $ = $collection->whereNotIn(‘id’, [2, 3]);
$result = $values->all();
ونحصل على النتيجة التي تمت تصفيتها:
يشير هذا البناء إلى أنك بحاجة إلى إرجاع القيم من المجموعة، والتي لا يتم تضمين القيمة الموجودة تحت المفتاح في صفيف القيم المحددة. تتم الإشارة إلى اسم المفتاح (اسم الحقل) الذي يتم من خلاله إجراء الفحص بواسطة الوسيطة الأولى، والوسيطة الثانية عبارة عن مصفوفة من هذه المعرفات التي سيتم من خلالها استبعاد السجلات.
الحد الأقصى ()
تقوم الطريقة max() بإرجاع الحد الأقصى للقيمة الموجودة في المجموعة ضمن المفتاح المحدد. على سبيل المثال، يمكنك بالتالي العثور على الحد الأقصى للمعرف المعرف الموجود في هذه المجموعة. عادة، بالطبع، يتم استخدام هذه الطريقة لأشياء مثل الحصول على الحد الأقصى للسعر أو بعض الخصائص، ولكن لتوضيح كيفية عمل الطريقة، دعنا نستخدمها id فقط. يمكن أيضًا استخدام الطريقة مع السلاسل النصية، وفي هذه الحالة يتم إجراء المقارنة وفقًا للخوارزمية Z > أ.
$maxId = $collection->max(‘id’); // 3
نتف ()
تقوم الطريقة pluck() بإرجاع مجموعة من القيم لمفتاح واحد محدد فقط. يكون هذا مفيدًا عند استخراج عمود واحد فقط من القيم وتشكيل مصفوفة منفصلة من تلك القيم. على سبيل المثال، تحتاج إلى استخراج قائمة بجميع المعرفات id أو عنوان رأسها.
// [1، 2، 3]
$result = $collection->pluck(‘id’);
// [‘تحليل الوكيل لـ HLTV’, ‘…GG.bet’, ‘…vk.com’]
$result = $collection->pluck(‘title’);
بالإضافة إلى ذلك، من الممكن استرداد البيانات، مع الإشارة إلى الحقل الذي سيتم تخزين المفتاح فيه، وتحديد اسم عمود القيمة كوسيطة أولى، واسم العمود الذي سيتم استخدامه كمفتاح:
$result = $collection->pluck(‘title’, ‘id’);
// [1 => ‘…HLTV’, 2 => ‘…GG.bet’, 3 =>’…vk.com’]
$result->all();
كل ()
الطريقة each() هي طريقة بسيطة للتكرار على القيم الكاملة للمجموعة. يتطلب الأمر رد اتصال باستخدام وسيطتين: قيمة قيمة المجموعة الأولى، ومفتاح ذلك العنصر. كما هو الحال مع المصفوفة العادية، المفتاح الأولي هو 0.
$result = $collection->each(function ($item, $key) {
HandleProject($item);
//…
});
عند العمل مع مجموعات Eloquent، يمكنك الوصول إلى جميع القيم في النموذج عن طريق مفتاح عنصر محدد. هذه هي الطريقة التي يمكنك من خلالها التكرار على جميع العناصر، وإجراء نوع من المنطق لكل منها.
Project::all()->each(function (Project $project, $key) {
إذا($project->isNew()) {
$project->sendToCheck(Carbon::now());
} آخر {
$project->sendToSuccess(Carbon::now());
// …
});
إذا قمت بإرجاع خطأ من رد الاتصال الخاص بك، فسوف يتوقف عن التكرار على العناصر.
$collection->each(function($value, $key) {
إذا($key === 1) {
إرجاع خطأ؛
// …
});
اضغط ()
تتيح لك الطريقة Tap() إمكانية تضمين مجموعة في أي مكان والحصول على الإصدار الحالي من البيانات ومعالجتها بطريقة ما. تأخذ هذه الطريقة رد اتصال يحصل على الإصدار الحالي من المجموعة. يمكنك أن تفعل ما تريد بقيم المجموعة؛ لن يتم تغيير المجموعة الأصلية. وبالتالي، يمكنك استخدام الطريقة touch() للقيام بشيء ما بالبيانات المجمعة في نقطة معينة دون تعديل المجموعة نفسها.
$result = $collection
->whereNotIn(‘id’, 3)
->tap(function(Collection $collection) {
logStatuses($collection->where(‘status’, ‘success’)->values());
})
->all();
وستكون النتيجة كما يلي tap() (ومنها يمكنك أن ترى أن تعديل المجموعة داخل الطريقة لم يؤثر على المجموعة الرئيسية بأي شكل من الأشكال):
في الطريقة tap()، قمت بتعديل المجموعة ثم قمت بتسجيلها. يمكنك أن تفعل ما تريد باستخدام المجموعة الموجودة داخل الحنفية ().
يمكنك أن ترى أن الطريقة tap() لا تقوم بتعديل نسخة المجموعة الأصلية. يمكنك معرفة المزيد من المعلومات حول الدالة المساعدة tap()، والتي لا تختلف عن طريقة التجميع في منطقها.
الأنبوب ()
الطريقة المبدئية pipe متشابهة جدًا مع tap() بمعنى أن كلاهما يأخذان kalbek الذي يستقبل المجموعة كوسيطة. بمجرد تنفيذها، تقوم الطريقة pipe بإرجاع النتيجة.
$result = $collection->pipe(function(Collection $collection) {
إرجاع $collection->sum(‘id’);
});
صدى نتيجة $; // 6
وبدلاً من ذلك، يمكنك إرجاع نفس المجموعة ومواصلة سلسلة الاتصال:
$result = $collection
->pipe(function(Collection $collection) {
return $collection->whereIn(‘id’, [1, 2, 3]);
})
->pluck(‘status’)
->all();
// [‘النجاح’، ‘النجاح’، ‘العمل’]
يحتوي على ()
تتحقق الطريقة contains() من وجود القيمة المحددة في المجموعة الحالية. في هذه الحالة، يُرجع الأسلوب يحتوي على() صحيحًا أو خطأ.
$statuses = [‘جاري العمل’, ‘success’, ‘خطأ’];
$collection = Collect($statuses);
$result = $collection->contains(‘working’); // صحيح
$result = $collection->contains(‘undef’); // خطأ
إذا قمت بتمرير وسيطة ثانية إلى الطريقة التي تحتوي على، فسوف تتحقق من وجود عنصر بقيمة حقل تطابق الوسيطة الثانية. بمعنى آخر، فإنه يتحقق من وجود زوج المفتاح/القيمة في المجموعة.
$result = $collection->contains(‘title’, ‘تحليل الوكيل لـ HLTV’); // صحيح
$result = $collection->contains(‘id’, 1); // صحيح
$result = $collection->contains(‘id’, 100500); // خطأ
يمكنك أيضًا تمرير calbek كوسيطة. وسيتم تنفيذ رد الاتصال هذا لكل عنصر من المجموعة، وإذا اجتاز أي منهم اختبار الحقيقة، فسوف يُرجع صحيح، وإذا لم يكن الأمر كذلك، ف خطأ.
$result = $collection->contains(function($value, $key) {
return $value[‘title’] === ‘تحليل الوكيل لـ HLTV’ || strlen($value[‘title’]) === 15;
}); // صحيح
يأخذ Kalbek وسيطتين: التكرار الحالي لعنصر المجموعة ومفتاح هذا العنصر. يتم هنا التحقق من الشرط: إما أن يكون عنوان العنصر وكيل تحليل لـ HLTV، أو أن يكون طول العنوان 15 حرفًا. يمكنك أن ترى أنه يمكنك الجمع بين الشروط بأي شكل من الأشكال.
انسى ()
الطريقة تنسى ()تقوم ببساطة بإزالة العنصر من المجموعة. ما عليك سوى تمرير مفتاح أحد العناصر وسيقوم بإزالة هذا العنصر من المجموعة.
$data = [‘الحد’ => 10, ‘الإجمالي’ => 100, ‘الاسم’ => ‘أداة إلغاء الوكيل’];
$collection = Collect($data);
$result = $collection->forget(‘name’); // [‘الحد’ => 10, ‘الإجمالي’ => 100]
$result = $collection->forget([‘name’, ‘total’]); // [‘الحد’ => 100]
الطريقة forget()لا تعمل مع المصفوفات المتداخلة المتعددة.
المتوسط ()
تقوم الطريقة avg() بإرجاع متوسط جميع العناصر. إذا كانت مجموعتك تتكون من أرقام أولية، فيمكن استدعاء الطريقة avg() بدون وسيطة. أو، إذا قمت بحساب القيمة المتوسطة لعناصر المصفوفة، فأنت بحاجة إلى تحديد المفتاح الذي سيتم من خلاله حساب القيمة المتوسطة. هناك أيضًا طريقة مشابهة، وهي اسم مستعار لـ avg()هو Average()، يمكنك استخدامها.
$collection = Collect([[‘age’ => 30], [‘age’ => 100], [‘age’ => 50]]);
$result = $collection->avg(‘age’); // 60
إذا قمت بتنفيذ الكود أعلاه، فستكون النتيجة 60، والتي يتم حسابها بناءً على مجموع كل قيم العمر، ويتم حساب متوسطها الحسابي. حالة الاستخدام الثانية لهذه الطريقة هي عدم تمرير وسيطة على الإطلاق. تنطبق هذه الطريقة على مجموعة من القيم الرقمية فقط:
$collection = Collect([10, 20, 30, 40, 50]);
$result = $collection->avg(); // 30
سيؤدي تشغيل هذا الرمز إلى إرجاع قيمة 30 وهي متوسط جميع العناصر.
الملخص.
في هذه المقالة، قمت بتفصيل ماهية مجموعات Laravel وما هي الطرق الموجودة فيها. لقد أوضحت الطرق الأكثر استخدامًا والمفيدة والتي تكون مفيدة عند العمل مع مجموعات Laravel. بالإضافة إلى النظرية، أظهر أيضًا أمثلة التعليمات البرمجية، موضحًا العمل مع أنواع مختلفة من البيانات، والقيم المضافة فعليًا، والمصفوفات. بعد دراسة هذا المقال، ستتمكن من التنقل والعمل بمهارة مع مجموعات Laravel دون أي مشاكل، وستعرف كيفية كتابتها داخليًا واستخدامها بمهارة.
للحصول على خدمات احترافية أو استشارة من GCC Marketing Dubai يُرجى الاتصال بنا أو الاتصال بنا مباشرة على 00971567300683
تعرف على وكالة تسويق رقمي في دبي لتحقيق نتائج قابلة للقياس.
روابط مفيدة ذات صلة
يمكنك التوسع أكثر عبر: وكالة تسويق رقمي في دبي, خدمات التحول الرقمي لقطاع الصناعة البحرية والملاحة في دبي, خدمات التحول الرقمي لقطاع تقنية المعلومات وتطوير البرمجيات, خدمات التحول الرقمي للعقارات في دبي, خدمات تطوير التقنيات في دبي.
كما ننصح بقراءة: شركة تطوير PHP Laravel في دبي, أفضل وكالة تسويق رقمي للتوظيف من دبي لـ SEM & تحسين محركات البحث, 5 يجب عليك استخدام أفضل أدوات تحسين محركات البحث (SEO) لتحليل مواقع الويب الخاصة بك, نصائح للحفاظ على تطبيق الهاتف المحمول الخاص بك خاليًا من الأخطاء بعد الإطلاق.
روابط مفيدة ذات صلة: اتصل بنا، تطوير مواقع التجارة الإلكترونية في دبي.
اترك تعليقاً
لن يتم نشر بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *