你好,我刚从php本地移动,想尝试在laravel的关系,所以我想显示一个职位和每个评论和用户谁的意见,以便当循环后有一个评论,有一个关系。
这是我的博客
public function index() {
$posts = Post::all();
$comment = Comment::all();
return view('home', [
'posts' => $posts,
'comments' => $comment
]);
}
我的博客. php:
public function comments() {
return $this->hasMany(Comment::class);
}
public function user() {
return $this->belongsTo(User::class);
}
我的评论:
public function post() {
return $this->belongsTo(Post::class);
}
public function user() {
return $this->belongsTo(User::class);
}
我的用户. php:
public function post() {
return $this->hasMany(Post::class);
}
我的主页. php:
@foreach ($posts as $post)
<div class="box-post">
<p>{{ $post->user->name }}</p>
<p>{{ $post->post_content}}</p>
<a href="/comment/{{ $post->id }}"><button>Comment</button></a>
</div>
@foreach ($comments as $comment)
<div class="box-post">{{ $comment->comment_content }} </div>
@endforeach
@endforeach
上面的代码运行时,帖子和作者沿着显示,但所有评论也出现在所有帖子中,我搜索了引用并尝试在Controller中更改评论值,但结果仍然相同,因此我使评论出现在每个帖子中 * $comment = Comment::all();
。
我想要的是显示帖子和与每个帖子相关的评论,就像twitter功能一样,可以回复人们的tweet。
谢谢你
3条答案
按热度按时间of1yzvn41#
然后在叶片中
50pmv0ei2#
您在构建模型及其关系方面做得很好。
我建议您更改调用post query的方式。
在你的刀片服务器里,你可以调用每个帖子的评论,就像这样。
就是这样,如果使用
barryvdh/laravel-debugbar
,您将看到只运行了3个查询,每个查询来自表帖子、评论和用户。对于备注查询和用户查询,不会取到所有行,
仅与从第一个查询获取的帖子相关。
祝您使用Laravel框架愉快!
您的PHP原生知识/专业技能将非常有用,并加快您的学习/掌握过程。
omhiaaxx3#
你的关系建立得很好,所以只需简单地使用
$post->comments
就可以得到每个帖子相关的所有评论。