laravel - 在 Laravel 中获取用户名和带有文章 id 的评论

标签 laravel laravel-5 eloquent eager-loading

我有 3 个表用户、评论和文章。我有这样的路线:

Route::get('/article/{id}', 'ArticlesController@view');

我想要的是,当我访问该路线时,我将在本文 ID 中获得用户名及其评论。

这是我在 ArticlesController 中的 View 函数:

public function view($id){
        $article = Article::with('comments')->find($id);
        return view('front.single',compact('article'));
}

这是我的 single.blade.php 代码:

<div class="single-grid">
      @section('content')
         <h1>{{ $article->title }}</h1>
         <p>{{ $article->content }}</p>
      @show
</div>          

<div class="comment-list">
@foreach($article->comments as $comment)
    <ul class="comment-list">
    <div class="comment-grid">
        <img src="/images/avatar.png" alt=""/>
        <div class="comment-info">
            <h4>{{ $comment->user->name }}</h4>
            <p>{{ $comment->comment }}</p>
            <h5>{{ $comment->created_at->diffForHumans() }}</h5>
            <a href="#">Reply</a>
        </div>
        <div class="clearfix"></div>
    </div>
</ul>
@endforeach
</div>

我不知道该怎么做,因为它给了我这样的错误:

"Call to undefined relationship [comment] on model [App\User]."

我已经定义了每个模型中的关系。这是我的文章模型:

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

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

我的评论模型:

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

这是我的用户模型:

public function articles(){
    return $this->hasMany(Article::class);
}
public function comments()
{
    return $this->hasMany(Comment::class);
}
public function publish(Article $article){
    $this->articles()->save($article);
}

这是我的表结构: -用户(ID、姓名、电子邮件、密码、remember_token、created_at、updated_at) -评论(id、user_id、article_id、评论、created_at、updated_at) -文章(id、user_id、标题、内容、created_at、updated_at)

那么我怎样才能通过使用这条路线来获取用户名呢?谢谢。

最佳答案

在您的评论模型上,您需要将文章替换为文章

public function article(){
        $this->belongsTo(Article::class);
    }

此外,如果您想获得用户特定的评论,则需要更改 Controller 操作代码

$article = Article::with('user.comment')->find($id) to
$article = Article::with('user.comments')->find($id); 

关于laravel - 在 Laravel 中获取用户名和带有文章 id 的评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46783069/

相关文章:

laravel - find_in_set 与 laravel 中的 join

windows - 在 Windows 7 中使用 Laravel 备份和恢复 PostgreSQL 数据库并设置 localhost 环境

php - 如何使用我的标准 Laravel 元素正确设置 MDBootstrap

php - Laravel 5.4 Eloquent 查询

laravel - 将 Tailwind CSS v2.0+ 安装到 Laravel 8 中可以工作,但运行时什么也不做

php - 使用 Artisan 调用 php artisan migrate

php - 如何在 Laravel 5.4 中的 *belongsToMany* 表连接上创建作用域?

php - Laravel Eloquent 的 API 适配器?

php - Eloquent orm表演?代替 where 子句中的值

laravel - 我们如何使用 Laravel Dusk 检查 Twitter Bootstrap 单选按钮?