所以我没有遇到很大的问题,但是我确实注意到了一些行不通的原因,并且无法解释原因。问题出在路线之内,因为我只是在学习和弄清多态关系,而其他方面则没有。
请记住,所有数据都是种子,并且通过手动插入注释并确保显示出来,我已经验证了字段中是否存在正确的数据。
这是我的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语句中,实际上确实会拉出所有注释以及存在注释时的用户名。真正的问题是,当没有注释时,它不会显示else语句回显。
我发现这真的很奇怪,因为如果我只输出一个帖子,但如果我为该用户拉多个帖子,就找不到它了。
任何想法为什么会这样做呢,我真的很困惑。谢谢!
我知道它可以与类似的收集方法一起使用。
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.";
}
有人知道我为什么不能使用!empty()函数的原因吗?
答案 0 :(得分: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.";
}
也希望有人可以在底部回答我问题的其他一小部分。
答案 1 :(得分:0)
您是否尝试过使用isEmpty()? AFAIK它应该返回Collection实例,所以简单的空不会削减它Laravel 5.6 collections method-isempty而是尝试一下,看看是否有帮助;)或针对您的情况isNotEmpty
有人知道我为什么不能使用!empty()函数的原因吗?
因为集合是一个对象,所以变量不是empty
因此,Collection对象具有函数isEmpty()
isNotEmpty()