我需要一些逻辑帮助,我有一个文章表和一个评论表。当用户评论我将其存储在表格中时:
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->string('user_id');
$table->string('comment');
$table->integer('article_id');
$table->timestamps();
});
}
我不知道是否需要在orther中添加另一个表格如user_comments
来建立这种关系,这对我来说听起来真的很愚蠢,但我遇到的问题是我收到了评论使用基本查询,如:
$comments = DB::select("Select * from comments where article_id=$articleID");
但是我很难显示username
和东西,所以我需要一个简单的关系,任何人都知道如何实现它?
答案 0 :(得分:2)
不,您不需要添加其他表格。你只需要定义适当的关系。在Article
模型:
public function comments()
{
return $this->hasMany(Comment::class);
}
在Comment
模型中:
public function user()
{
return $this->belongsTo(User::class);
}
要username
使用nested eager loading:
$article = Article::with('comments.user')->find($articleId);
然后在视图中迭代集合:
@foreach ($article->comments as $comment)
<div>{{ $comment->comment }}</div>
Comment author: {{ $comment->user->username }}
@endforeach