Laravel需要获得每条评论的用户名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel需要获得每条评论的用户名相关的知识,希望对你有一定的参考价值。
我得到评论者的问题是我在评论时保存了用户ID,并且我在帖子下方返回了所有评论,但是当我尝试返回用户名时,Laravel给出了一个错误,我想这是因为它没有知道应该从users表返回用户名的用户ID。目前评论的控制器如下:
$comments = DB::select("Select * from comments where article_id = $articleID");
我得到$articleID
通过orther的路线从数据库中找到文章内容,我在评论表中使用它以查找属于特定文章的评论。但是,当我试图举例说
$commenter = User::where('id', $comments->user_id)->first();
它失败。我尝试了这种类型的SQL命令的几个版本,但不起作用。因为它不知道我在说什么评论者(我猜)。你知道我怎么做吗?
答案
你必须使用foreach。如果您需要为每个注释提供用户,您应该迭代注释以实现此目的。例如:
$comments = DB::select("Select * from comments where article_id = $articleID");
foreach ($comments as $comment) {
$commenter = User::where('id', $comment->user_id)->first();
}
如果您想获得文章中有评论的所有用户,您应该尝试搜索用户并使用已建立的关系。主要想法是这样的。
在用户模型中,您必须设置与注释的关系:
public function comments()
{
$this->hasMany(Comment::class);
}
然后,您可以使用whereHas
来搜索这些关系:
$users = User::whereHas('comments', function ($q1) use ($articleId) {
$q1->where('article_id', $articleId);
})->get();
这样,您将拥有对本文发表评论的所有用户的列表。
另一答案
只是忘了所有这些东西,并按照以下步骤:
1)在您的评论中添加用户关系模型:
function user(){
return $this->belongsTo('AppModelsUser','user_id','id');
}
2)然后得到你的意见如下:
$comments = Comments::where('artical_id',$articleID)->with('user')->get();
3)然后你将在每个评论对象中获得用户对象。
以上是关于Laravel需要获得每条评论的用户名的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1,向用户返回响应,然后执行一些代码 [关闭]