Laravel Elloquent模型表关系

时间:2018-05-10 11:37:41

标签: laravel

我正在学习Laravel,有一件事是我无法解决的。

我有什么:

用户,帖子,评论和相应模型表

user.php的:

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

public function publishComment(Comment $comment)
    {
        $this->comments()->save($comment);
    }

post.php中:

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

Comment.php:

public function post() { return $this->belongsTo(Post::class); } 

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

我想要什么?

由于我有博客,一个登录用户可以创建许多帖子(这是有效的)。 但是,相同的登录用户可以为一个帖子创建许多评论。 (用户有很多评论,帖子有很多评论)。

表格

用户:| id |名字|电子邮件|密码

评论:| id | user_id | post_id |体

发布:| id | user_id |标题|体

我尝试了什么? 我创建了控制器

CommentsController:

class CommentsController extends Controller

{

public function store(Post $post)
{

    $this->validate(request(), ['body' => 'required|min:2']);

    auth()->user()->publishComment(

        new Comment(request('body'));

    );

    return back();

}

在我的刀片文件中,我只想要$ comment-> user-> name(获取评论所属的用户的名称)

我遇到错误尝试获取非对象的属性

<?php echo e($comment->user->name); ?>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以在view.blade.php中执行此操作:

// Here I am assuming you have a $post variable that contains your blog post.
<ul>
    @foreach ($post->comments as $comment)
      <li>{{ $comment->user->name }}</li>
    @endforeach
</ul>

这将循环显示您对博客帖子的所有评论并显示所有者的姓名,希望这会有所帮助。