بي اتش بي لارفيل | اختبار الأشكال المتعددة للكثير | إذا لم يعمل البيان بشكل صحيح

0

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

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

هذا هو ملف web.php الخاص بي.

Route::get('/get/{id}/post', function($id) {
  $user = User::findOrFail($id);
  foreach($user->posts as $post) {
    echo "<hr /><h2>" . $post->title . "</h2>";
    echo "<p>By: ". $post->users->name ." | Date:" . $post->created_at->format('n-j-Y');
    echo "<br />" . $post->content . "</p><hr />";
    echo "<h3>Comments</h3>";
    if(!empty($post->comments)) {
      foreach($post->comments as $comment) {
        echo "<u>" . $comment->users->name . "</u><br />" . $comment->content . "<br /><br />";
      }
    } else {
      echo "Sorry there are no comments yet.";
    }
  }
});

المشكلة التي أواجهها موجودة في عبارة if في الأسفل ، فهي في الواقع تسحب جميع التعليقات واسم المستخدمين عند وجود التعليقات. المشكلة الحقيقية هي أنه عندما لا تكون هناك تعليقات ، فإنها لا تظهر صدى البيان الآخر.

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

أي أفكار لماذا هذا سيفعل هذا أنا حقا في حيرة من أمري. شكر!

حصلت عليه للعمل مع طريقة جمع مثل ذلك.

if($post->comments->isNotEmpty()) {
  foreach($post->comments as $comment) {
    echo "<u>" . $comment->users->name . "</u><br />" . $comment->comment . "<br /><br />";
  }
} else {
  echo "Sorry there are no comments yet.";
}

هل يعرف أحد السبب وراء عدم تمكني من استخدام الدالة! فارغة ()؟

2 الاجابة

0

هل حاولت مع isEmpty ()؟ يجب أن يعيد AFAIK نسخة Collection ، لذا لن يقطعها فارغة بسيطة طريقة Laravel 5.6 - isempty جرب هذا بدلاً من ذلك وانظر إذا كان ذلك يساعد ؛) أو لحالتك

نظرًا لأن Collection عبارة عن كائن ، فإن المتغير ليس فارغًا ولهذا السبب يحتوي كائن Collection على وظائف

:مؤلف
0

حصلت عليه للعمل مع طريقة جمع مثل ذلك. بفضل Vaida Lungis لاقتراحك استخدام طريقة تجميع من laravel هنا: https://laravel.com/docs/5.6/collections#method-isempty

if($post->comments->isNotEmpty()) {
  foreach($post->comments as $comment) {
    echo "<u>" . $comment->users->name . "</u><br />" . $comment->comment . "<br /><br />";
  }
} else {
  echo "Sorry there are no comments yet.";
}

آمل أيضًا أن يتمكن شخص ما من الإجابة على الجزء الصغير الآخر من سؤالي في الأسفل.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام