laravel - PHP Laravel | 测试多态多对多 | 如果语句不能正常工作
问题描述
所以我没有遇到很大的问题,但我确实注意到了一些不起作用的东西,我无法解释为什么。问题出在路线之内,因为我只是在学习和处理多态关系等等。
请记住,所有数据都是播种的,并且我已通过手动插入评论并确保显示出来来验证字段中是否存在正确的数据。
这是我的 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() 函数的原因吗?
解决方案
你试过 isEmpty() 吗?AFAIK 它应该返回 Collection 实例,所以简单的空不会削减它Laravel 5.6 collections method-isempty试试这个,看看它是否有帮助;)或你的情况isNotEmpty
有人知道为什么我不能使用 !empty() 函数的原因吗?
因为 Collection 是一个 Object 因此变量不是空
的因此 Collection 对象有一个函数isEmpty()
isNotEmpty()
推荐阅读
- flutter - Dart 在 pubspec.yaml 中为多模块项目使用任何依赖项
- html - ReactJS 中的多级菜单
- java - 在使用 Apache Lucene 7.1.0 的 JapaneseTokenizer 时遇到 NoClassDefFoundError
- forms - 如何在 Access 中添加具有其他多数据(1 到多)关系的记录
- listview - 如何使用 Future Builder 创建包含来自 Cloud FireStore 的数据的列表
- python - 使用分隔符分隔数据框中列中的字符串并将子字符串添加到单独的列中
- ios - 无法使用 aws-sdk 为 react-native 加载捆绑包
- java - 使用 SAS URL 为 Azure Blob 上传文件失败
- html - 如何让我的提交按钮将用户带到第二页而不干扰我的 Python 代码?
- javascript - 覆盖 document.cookie 中的值