3个表多对多关系

我正在 Laravel 中创建一个网站并遇到以下问题。


我有三个表:User、JobOffer和Company 许多用户有很多工作机会。


我在用户和 Joboffers 之间创建了一个多对多的关系。


用户模型:


return $this->belongsToMany('App\JobOffer')->withTimestamps();

招聘模式:


return $this->belongsToMany('App\User')->withTimestamps();

但是问题是 Joboffers 表有一个列company_id(因为 Company 和 Joboffer 之间的关系)并且 Users-Joboffer 之间的关系返回了公司的 id。但是我想知道公司的名字。


非常感谢!


更新:


我的模型:


应用\用户.php

public function job_offers()

{

    return $this->belongsToMany('App\JobOffer')->withTimestamps();

}

App\JobOffer.php

public function users()

{

    return $this->belongsToMany('App\User')->withTimestamps();

}


public function company()

{

    return $this->belongsTo('App\Company');

}

应用\公司.php

public function job_offers()

{

    return $this->hasMany('App\JobOffer');

}

用户IGP是对的。非常感谢IGP。


明月笑刀无情
浏览 164回答 1
1回答

呼唤远方

在提供更多细节之前,我假设关系如下:用户模型和JobOffer模型具有 M:N 关系公司模型和JobOffer模型具有 1:M 关系# App\User.phppublic function job_offers(){    return $this->belongsToMany('App\JobOffer')->withTimestamps();}# App\JobOffer.phppublic function users(){    return $this->belongsToMany('App\User')->withTimestamps();}public function company(){    return $this->belongsTo('App\Company');}# App\Company.phppublic function job_offers(){    return $this->hasMany('App\JobOffer');}从这些关系中,您可以像这样获得公司名称:use App\User;$user = User::with('job_offers.company')->where(...)->first();生成的对象将如下所示:App\User {  id: 1,  created_at: "",  updated_at: "",  job_offers: Illuminate\Database\Eloquent\Collection {    all: [      App\JobOffer {        id: 85,        company_id: 36,        created_at: "",        updated_at: "",        pivot: Illuminate\Database\Eloquent\Relations\Pivot {          job_offer_id: 85,          user_id: 1,          created_at: "",          updated_at: "",        },        company: App\Company {          id: 36,          name: "Company1"          created_at: "",          updated_at: "",        },      },      App\JobOffer {        id: 90,        company_id: 44,        created_at: "",        updated_at: "",        pivot: Illuminate\Database\Eloquent\Relations\Pivot {          job_offer_id: 90,          user_id: 1,          created_at: "",          updated_at: "",        },        company: App\Company {          id: 44,          name: "Company2"          created_at: "",          updated_at: "",        },      },    ],  },}您需要做的就是遍历用户的工作机会以获取每个公司名称。@foreach($user->job_offers as $job_offer)    Company name: {{ $job_offer->company->name }}@endforeach
打开App,查看更多内容
随时随地看视频慕课网APP