Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Laravel |测试多态多对多| If语句无法正常工作_Laravel_If Statement_Routes_Polymorphism_Many To Many - Fatal编程技术网

PHP Laravel |测试多态多对多| If语句无法正常工作

PHP Laravel |测试多态多对多| If语句无法正常工作,laravel,if-statement,routes,polymorphism,many-to-many,Laravel,If Statement,Routes,Polymorphism,Many To Many,所以我没有什么大问题,但我确实注意到了一些不起作用的东西,我无法解释原因。问题就在我的思路之内,因为我只是在学习和处理多态关系之类的东西 请记住,所有数据都是种子数据,我已经通过手动插入注释并确保显示来验证字段中是否有正确的数据 这是我的web.php文件 Route::get('/get/{id}/post', function($id) { $user = User::findOrFail($id); foreach($user->posts as $post) { e

所以我没有什么大问题,但我确实注意到了一些不起作用的东西,我无法解释原因。问题就在我的思路之内,因为我只是在学习和处理多态关系之类的东西

请记住,所有数据都是种子数据,我已经通过手动插入注释并确保显示来验证字段中是否有正确的数据

这是我的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.";
    }
  }
});
Route::get('/get/{id}/post',函数($id){
$user=user::findOrFail($id);
foreach($user->posts as$post){
echo“
“$post->title.”; echo“通过:“..post->users->name.”日期:“..post->created_at->format('n-j-Y'); 回声“
“$post->content.”


”; 回应“评论”; 如果(!空($post->comments)){ foreach($post->comments as$comment){ 回显“$comment->users->name.”
“$comment->content.”
; } }否则{ echo“抱歉,还没有评论。”; } } });
我遇到的问题是在底部的if语句中,它实际上会在注释存在时提取所有注释和用户名。真正的问题是,当没有注释时,它不会显示else语句echo

我发现这真的很奇怪,因为我发现如果我只是输出一篇文章,但如果我为那个用户拉多篇文章,它就不起作用了

我真的不明白为什么会这样。谢谢


我用这样的收集方法得到了它

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.";
}
if($post->comments->isNotEmpty()){
foreach($post->comments as$comment){
回显“$comment->users->name.”
“$comment->comment.”
“; } }否则{ echo“抱歉,还没有评论。”; }

谁都知道我不能使用这个软件的原因!empty()函数?

我让它与这样的收集方法一起工作。感谢Vaida Lungis建议使用laravel的收集方法:

if($post->comments->isNotEmpty()){
foreach($post->comments as$comment){
回显“$comment->users->name.”
“$comment->comment.”
“; } }否则{ echo“抱歉,还没有评论。”; }
也希望有人能回答我问题底部的另一小部分。

你试过使用isEmpty()吗?好吧,它应该返回集合实例,所以simple empty不会剪切它。试试这个,看看是否有帮助;)或者对于您的案例
isNotEmpty

谁都知道我不能使用这个软件的原因!空()函数

因为集合是一个对象,所以变量不是
因此,集合对象有一个函数
isEmpty()
isNotEmpty()

您是否尝试过使用isEmpty()?好吧,它应该返回集合实例,所以simple empty不会剪切它。试试这个,看看是否有帮助;)或者对于您的案例,
isNotEmpty
谢谢,我甚至没有想过使用收集方法。我很惊讶,虽然我认为它也会起同样的作用。有趣的是,我仍然想知道它不起作用的原因。
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.";
}