获取属于多个查询的其他外键标签
Get label of other foreign key in belongs to many query
我有四个table
1- 用户,2- self_jobs,3- users_jobs,4- 状态
用户作业是支点 table 用户和自我作业为每个用户保存作业。现在我有一个查询 return 每个用户的所有工作和关于他们的信息。
这是:
return $this->belongsToMany('App\SelfJob','users_jobs','user_id','self_job_id')->withPivot(['priority','status_id'])->withTimestamps();
如您所见,我需要我的数据透视 table 中的其他列(优先级和 status_id)。 Status_id 也是状态 table 的外键。
如何以连接到状态 table 和 return 状态标签的方式更改我的查询,我将其 ID 保存在我的 users_jobs table?
尝试不使用数据透视模型,只需为 users_jobs
创建一个模型并在其中添加属于 job
、user
和 status
[=17= 的关系]
用户模型
public function userJobs(){
return $this->hasMany('App\UserJob','user_id');
}
UserJob 模型
class UserJob extends Model {
protected $table = 'users_jobs';
public function user(){
return $this->belongsTo('App\User');
}
public function job(){
return $this->belongsTo('App\Job', 'self_job_id');
}
public function status(){
return $this->belongsTo('App\Status');
}
}
获取数据
$user = User::with('userJobs', 'userJobs.job', 'userJobs.status')->find($userId);
foreach($user->userJobs as $userJob){
dd($userJob->priority);
dd($userJob->status->label);
}
我有四个table
1- 用户,2- self_jobs,3- users_jobs,4- 状态
用户作业是支点 table 用户和自我作业为每个用户保存作业。现在我有一个查询 return 每个用户的所有工作和关于他们的信息。 这是:
return $this->belongsToMany('App\SelfJob','users_jobs','user_id','self_job_id')->withPivot(['priority','status_id'])->withTimestamps();
如您所见,我需要我的数据透视 table 中的其他列(优先级和 status_id)。 Status_id 也是状态 table 的外键。 如何以连接到状态 table 和 return 状态标签的方式更改我的查询,我将其 ID 保存在我的 users_jobs table?
尝试不使用数据透视模型,只需为 users_jobs
创建一个模型并在其中添加属于 job
、user
和 status
[=17= 的关系]
用户模型
public function userJobs(){
return $this->hasMany('App\UserJob','user_id');
}
UserJob 模型
class UserJob extends Model {
protected $table = 'users_jobs';
public function user(){
return $this->belongsTo('App\User');
}
public function job(){
return $this->belongsTo('App\Job', 'self_job_id');
}
public function status(){
return $this->belongsTo('App\Status');
}
}
获取数据
$user = User::with('userJobs', 'userJobs.job', 'userJobs.status')->find($userId);
foreach($user->userJobs as $userJob){
dd($userJob->priority);
dd($userJob->status->label);
}