اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر
بتاريخ 8 دقائق مضت قال علي العبدالله:

اريد عند استدعاء البيانات من قاعدة البيانات بواسطة foreach

عرض مجموعة في هذا المكان في الصفحة 

ومجموعة اخرى في مكان اخر في نفس الصفحة

 

يمكنك في التابع الذي يعرض الصفحة تمرير متغيرين, المتغير الاول يحتوي على مجموعة لها شروط معينة, لتسهيل الشرح , تخيل لدينا منتجات وكل منتج بطبيعة الحال لديه سعر , فلتكن المجموعة الاولى شرطها ان يكون سعرها أكبر من 100$,يمكنك وضع الشروط كما تريدها أنت, وهذا المتغير تعرضه في المكان الاول, المتغير الثاني نفس الحال يحتوي على مجموعة ذات شروط معينة , ليكن الشرط هذه المرة السعر أقل من 100, تقوم بعرض المجموعة التي بداخل المتغير الثاني في المكان الآخر الذي تريده أنت
أو يمكنك تمرير كل المجموعة في متغير واحد, وفي foreach الأولى تضع شرطا قبل عنصر div مثلا ان يكون سعر المنتج اكبر من 100, في foreache الثانية تضع شرطا أن يكون سعر المنتج أقل من 100, وهكذا

  • 0
نشر
بتاريخ 16 دقائق مضت قال علي العبدالله:

اريد عند استدعاء البيانات من قاعدة البيانات بواسطة foreach

عرض مجموعة في هذا المكان في الصفحة 

ومجموعة اخرى في مكان اخر في نفس الصفحة

أظن أن قصدك أن يكون الناتج كالتالي:

<ul class="sec-1">
  <li>res 1</li>
  <li>res 2</li>
  <li>res 3</li>
  <li>res 4</li>
</ul>

<ul class="sec-2">
  <li>res 5</li>
  <li>res 6</li>
  <li>res 7</li>
  <li>res 8</li>
</ul>

 

في لارافيل , يمكنك تقسيم نتائج الإستعلام إلى أكثر من مجموعة عن طريق الإستعانة بمتغيرات الدور التي تكون معرفة ضمن كل تكرار من الدور foreach أو عن طريق الإستعانة بمفهوم المجموعات collections .

 فمثلا لتقسيم العناصر إلى مجموعات بـ 5 عناصر عن طريق الإستعانة بمتغيرات الدور :

@foreach($items as $item)
    @if($loop->first or $loop->iteration % 5 == 0)
        <ul>
    @endif
          
    <li>
        res {{ $loop->iteration }}
    </li>
          
    @if($loop->last == true or $loop->iteration % 5 == 0)
        </ul>
    @endif
@endforeach

حيث أننا نقوم بفتح وسم جديد كل مرة يكون فيها التكرار جديدا أو قابلا للقسمة على 5 . و ليكن في العلم أن الخاصية first تعيد إما true أو false بحسب ترتيب الدور في حين أن الخاصية iteration تمثل التكرار الحالي , و نفس الشيء بالنسبة لغلق الوسم و المتغير last  .

لكن ,و كطريقة أفضل , يمكنك الإستعانة بالتابع chunk لتشكيل كل مرة مجموعة مستقلة في كل دورة عن طريق : 

@foreach($items->chunk(5) as $chunk)
    <ul>
        @foreach($chunk as $item)
           <li> res {{ $loop->iteration }} </li>
        @endforeach 
    </ul>
@endforeach

بحيث أن هذا سيقوم بتشكيل مجموعات ذات خمسة عناصر , و سيكون من السهل التكرار داخلها أو القراءة منها . 

طبعا يمكنك بنفس المنطق تطويع العملية بحسب بنية الـ HTML لديك .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...