拉拉维尔表关系获取注释>用户名(id)



我正在尝试显示每个评论块的用户名。 目前,我已经让它显示文章+评论和评论的正文,但是在我的表格中,我已经为每条评论分配了user_id。我可以让它显示user_id,但我不确定如何查找分配给该user_id的用户名。

视图:

@foreach($article->comments as $comment)
{{$comment->user->username}}
{{$comment->body}}
@endforeach

模型文章:

namespace App;
use IlluminateDatabaseEloquentModel;
class Articles extends Model
{
public function comments(){
return $this->hasMany('Appcomments')->orderBy('id', 'DESC');
}
}

模型注释:

namespace App;
use IlluminateDatabaseEloquentModel;
class comments extends Model
{
public function user(){
return $this->hasOne('Appusers');
}
}

文章控制器:

namespace AppHttpControllers;
use IlluminateHttpRequest;
use DB;
use AppArticles;
use AppComments;
use AppUsers;

class ArticlesController extends Controller
{
public function getAllArticles(){
$results = Articles::orderBy('id', 'DESC')->get();
return view('index', ['articles' => $results]);
}
}

错误:

SQLSTATE[42S22]:找不到列:1054 未知列 "where子句"中的"users.comments_id"(SQL:从users中选择 * 哪里users.comments_id= 16 和 'u ▶">

您在类中使用了无效comments关系。

使用belongsTo方法代替hasOne,如下所示

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class comments extends Model
{
public function user(){
return $this->belongsTo('Appusers')->withDefault([
"username"=>null
]);
}
}

最新更新