获取属于多个查询的其他外键标签

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 创建一个模型并在其中添加属于 jobuserstatus[=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);
}