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

ترتيب Laravel بناء على علاقة

Mahmoud Alrashidi

السؤال

أحاول المرور على جميع التعليقات التي نشرها مؤلف منشور معين و عرضها بهذا الشكل:

foreach($post->user->comments as $comment)
{
  echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>";
}

و هذه نتيجة العرض:

First comment (2)
This is a comment (3)
This is the second Comment (2)

كيف يمكنني الطلب عن طريق post_id بحيث يتم ترتيب القائمة أعلاه بهذا الشكل: 2،2، 3

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

Recommended Posts

  • 0

مرحبا،

يمكننا ترتيب المنشورات بالطريقة التالية ضمن المتحكم قبل إرسالهم للعرض:

public function getPosts(Request $request)
{
  $posts = $request->query()->get('###');

  $posts = collect($posts);
  $posts->sortBy('id');  // أو تحديد شيئ آخر 

  return view('showPosts')->with('posts', $posts);
}

 

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

  • 0

بإمكانك إنشاء تابع جديد في النموذج User بهذا الشكل:

public function sortedComments()
{
    return $this->hasMany('Comment')->orderBy('post_id');
}

و عند عرض التعليقات تقوم بالتالي:

foreach($post->user->sortedComments as $comment)
{
  echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>";
}

أو يُمكنك ترتيب التعليقات في المُتحكم و تمريرها لصفحة العرض:

$comments = auth()->user()
              ->comments()
              ->orderBy('post_id')
              ->get();

return view('view.name', compact('comments'));

// و في صفحة العرض تقوم بإستخدام المُتغير comments

في صفحة العرض:

@foreach($comments as $comment)
  <li>{{ $comment->title }} ({{ $comment->post_id }})</li> 
@endforeach

 

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

  • 0

توجد طريقة أخرى لترتيب التعليقات بواسطة حقل created_at  كالتالي :

$user = Auth::user()

$user =  $user->with(['comments' => function ($query) use ('ASC') {
    $query->orderBy('creatd_at', 'ASC');
}]);

بعد ذلك يمكن إظهار التعليقات في صفحة العرض :

foreach($user->comments as $comment)
{
  echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>";
}

وهكدا ستظهر التعليقات مرتبة على حسب تاريخ إضافتها 

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...