将用户与laravel中的评论相关联

时间:2018-01-12 20:05:39

标签: php sql laravel function

我正在尝试将用户与评论相关联。我能够将正确的评论与每部电影联系起来。如果我使用{{$comment->user_id}},它将在注释旁边显示用户ID,但它会从评论表中获取此信息。我希望显示在用户表中找到的用户名。

我的评论表:

Schema::create('comments', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('user_id');
    $table->integer('film_id');
    $table->string('body');
    $table->timestamps();

我的用户表:

    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();

我的评论课:

class Comment extends Model
{
    public function film()
    {
        return $this->belongsTo(Film::class);

    }

    public function user()
    {
        return $this->belongsTo(User::class);

    }

我的用户类

public function comments()
{
    return $this->hasMany(Comment::class);
}

我的控制器:

/* Displays list of films*/

        public function display()
            {
                $films = Film::all();
                return view('list', compact('films'));
            }

/* Displays comments for a film*/

            public function comment($id)
            {
                return view('comment', ['film' => Film::find(1)]);
            }

我想也许我可以在评论函数中传递另一个参数:

public function comment($id)
{
      $user = User::find($id)
    return view('comment', ['film' => Film::find(1)], ['user' => $user]);

但这不起作用。我得到以下错误。虽然我知道它的语法错误但我认为这不是我能做的事情。

  

解析错误:语法错误,意外“返回”(T_RETURN)

1 个答案:

答案 0 :(得分:1)

您忘记在;之后放置User::find($id),这就是您收到此错误的原因。

您也可以使用以下语法:

public function comment($id)
{
    return view('comment', [
        'film' => Film::find(1),
        'user' => User::find($id)
    ]);
}