显示来自另一个 table Laravel 8 的用户名

Display user name from another table Laravel 8

大家好, 所以我有 2 tables

  1. 是列表
  2. 是用户

在列表中我有一些列,一个是 user_id,与用户 table 相关。 我想显示与用户 table 相关的用户名。 在索引 blade 中,我使用了一些标签。 但是当我使用 ->rightjoin("users", "users.id", "=", "listings.user_id") 时,它是有效的,但是, 加入破坏了我的标签,使它们成为默认标签,与其他帖子相同。

 public function index(Request $request)
    {
        $listings = Listing::where('is_active', true)->with('tags') 
            //->rightjoin("users", "users.id", "=", "listings.user_id") //don't show tags of the posts
            ->orderBy('listings.created_at', 'desc')
            ->get();
                //check if posts ar listing by last date or something
$tags = Tag::orderBy('name') // variable displayed in view
            ->get();

您可以像这样使用 with 方法获取相关的 user

public function index(Request $request) {
        $listings = Listing::where('is_active', true)->with(['user', 'tags']) 
            ->orderBy('listings.created_at', 'desc')
            ->get();
}

但请确保将正确的关系添加到 Listing 模型中,如下所示

上市模式


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

我推荐这个控制器代码:

public function index(Request $request) {
        return $listings = Listing::query()
            ->where('is_active', true)->with(['user', 'tags'])
            ->orderBy('listings.created_at', 'desc')
            ->get();
}

在模型部分,我建议您输入以下代码:‌

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

我建议你填写字段foreignKey, ownerkey in relation: 如下例:

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