Получить метку другого внешнего ключа относится ко многим запросам - PullRequest
0 голосов
/ 02 июля 2018

у меня четыре стола

1- пользователи, 2- self_jobs, 3- users_jobs, 4- статусы

Задания пользователей - это сводная таблица с пользователями, а самостоятельные задания сохраняют задания для каждого пользователя. Теперь у меня есть запрос, чтобы вернуть все задания для каждого пользователя и информацию о них. Вот оно:

return $this->belongsToMany('App\SelfJob','users_jobs','user_id','self_job_id')->withPivot(['priority','status_id'])->withTimestamps();

Как вы можете видеть, я хочу другие столбцы (priority и status_id) из моей сводной таблицы. Status_id также является внешним ключом для таблицы состояния. Как я могу изменить свой запрос таким образом, чтобы он присоединялся к таблице статусов и возвращал метку статуса, чтобы я сохранил его идентификатор в своей таблице users_jobs?

1 Ответ

0 голосов
/ 02 июля 2018

Попробуйте без использования сводной модели, просто создайте модель для users_jobs и добавьте относящиеся к ней отношения для job, user и status

Модель пользователя

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);
}
...