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

تجميع المقالات في Laravel حسب التاريخ باستخدام foreach

Ahmed Alammar

السؤال

سلام عليكم 

عندي مشروع في laravel 

وforech تكرر  مثل تاريخ 1-4-2023 عنوان مقالة - الرياضة

 

انا ابي امنع forech من تكرار التاريخ يعني يجي التاريخ وتجتمع المقالات تحته وشكرا

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

إذا فهمت سؤالك بشكل صحيح، فأنت ترغب في تجميع المقالات التي تحمل نفس التاريخ تحتاج إلى استخدام حلقة foreach في Laravel صحيح؟ وإذا كان كذلك فتستطيع استخدام دالة groupBy المتاحة في Laravel لتجميع المقالات حسب التاريخ كالتالي:

// استعلام لاسترداد جميع المقالات الموجودة في قاعدة البيانات
$articles = Article::all();

// تجميع المقالات حسب التاريخ
$groupedArticles = $articles->groupBy('date');

// عرض المقالات حسب التاريخ
@foreach($groupedArticles as $date => $articles)
    <h2>{{ $date }}</h2>
    @foreach($articles as $article)
        <h3>{{ $article->title }}</h3>
        <p>{{ $article->content }}</p>
    @endforeach
@endforeach

حيث تسترد جميع المقالات من قاعدة البيانات، ثم تجميعها حسب التاريخ باستخدام الدالة groupBy('date')، ثم استخدام حلقتي foreach متداخلتين لعرض المقالات حسب التاريخ.

وعليك بالتأكد من ضبط النموذج وقاعدة البيانات بشكل صحيح وفقًا لما تريده.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إذا كان لديك مجموعة من المقالات التي تحتوي على تاريخ النشر وعنوان المقالة وتريد تجميعها بناءً على التاريخ، يمكنك استخدام الكود التالي:

$articles = Article::orderBy('published_date', 'desc')->get()->groupBy('published_date');

في هذا المثال، يتم استدعاء دالة `groupBy()` على النتيجة المسترجعة من الدالة `get()` لتجميع المقالات بناءً على التاريخ. يتم تحديد الترتيب باستخدام الدالة `orderBy()` لجعل المقالات الأحدث أولاً.

وبهذا، ستحصل على مجموعات من المقالات التي تم تجميعها بناءً على التاريخ، ولا يتم تكرار التاريخ في النتائج. يمكنك استخدامها في عرض المقالات على الصفحة بناءً على التاريخ، على سبيل المثال:

@foreach($articles as $date => $articlesByDate)
  <h2>{{ $date }}</h2>
  <ul>
    @foreach($articlesByDate as $article)
      <li>{{ $article->title }}</li>
    @endforeach
  </ul>
@endforeach

في هذا المثال، يتم استخدام دالة `foreach()` للتكرار على المجموعات التي تم تجميعها بناءً على التاريخ. تم عرض التاريخ كعنوان رئيسي وعرض عناوين المقالات تحتها ضمن علامات `ul` و `li`.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

وعليكم السلام،

يمكنك تنظيم مقالاتك بحيث يظهر كل تاريخ مرة واحدة وتحته جميع المقالات المتعلقة بهذا التاريخ. يتطلب هذا تجميع المقالات حسب التاريخ في مصفوفة ومن ثم عرضها باستخدام حلقة تكرار foreach. إليك مثالًا على كيفية تنفيذ ذلك:

تجميع المقالات حسب التاريخ: أولًا، قم بتجميع المقالات في مجموعات حسب تاريخ النشر. يمكنك القيام بذلك في الكود الخاص بمتحكم Laravel.

عرض المقالات في الواجهة الأمامية: استخدم حلقة foreach في ملف الواجهة الأمامية (على سبيل المثال، ملف Blade) لعرض التواريخ والمقالات المرتبطة بها.

فيما يلي مثال توضيحي لكيفية القيام بذلك:

في متحكم Laravel:

public function index() {
     
    $articles = Article::orderBy('publish_date', 'desc')->get();

    $articlesByDate = $articles->groupBy(function($item) {
        return $item->publish_date->format('Y-m-d'); 
    });

    return view('articles.index', compact('articlesByDate'));
}

في ملف Blade:

@foreach ($articlesByDate as $date => $articles)
    <h2>{{ $date }}</h2> 
    @foreach ($articles as $article)
        <p>{{ $article->title }} - {{ $article->category }}</p>
    @endforeach
@endforeach

في هذا المثال، يتم أولاً تجميع المقالات حسب تاريخ النشر في المتحكم، ثم يتم تكرار عرض التواريخ والمقالات المرتبطة بها في الواجهة الأمامية باستخدام foreach.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...