Laravel的关系,我是否需要额外的表来进行评论

时间:2017-12-26 13:10:18

标签: mysql laravel laravel-5.4 relationship

我需要一些逻辑帮助,我有一个文章表和一个评论表。当用户评论我将其存储在表格中时:

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和东西,所以我需要一个简单的关系,任何人都知道如何实现它?

1 个答案:

答案 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