首页 文章

Laravel表关系得到comment-> username(id)

提问于
浏览
0

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

视图:

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

模特文章:

namespace App;

use Illuminate\Database\Eloquent\Model;

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

型号评论:

namespace App;

use Illuminate\Database\Eloquent\Model;

class comments extends Model
{
    public function user(){
        return $this->hasOne('App\users');
    }
}

文章控制器:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Articles;
use App\Comments;
use App\Users;


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:select * from users where users.comments_id = 16和`u▶“

1 回答

  • 1

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

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

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

相关问题