Latvel Datables Search включает результаты сводной таблицы - PullRequest
0 голосов
/ 04 июня 2018

Возможно, стоит упомянуть следующую информацию, прежде чем я объясню, что я пытаюсь сделать.

У меня есть 3 таблицы: - пользователи - вакансии - user_vacancy

Вакансия может иметьвладелец, который указан внешним ключом user_id в таблице вакансий.

Многие другие пользователи могут быть членами команды, которым можно назначить эту же вакансию с помощью сводной таблицы user_vacancy

Я пытаюсьперечислить все вакансии для одного пользователя в таблице данных, будь то владелец или член команды вакансии через модель вакансии, мой код выглядит следующим образом:

VacanciesController.php:

public function get_user_vacancies() {
    $user = User::find(auth()->id());

    $vacancies = Vacancy::with(['team_members' => function($q) use ($user) {
          $q->where('user_id', $user->id);
    }])->where('user_id', $user->id);

    $dataTables = Datatables::of($vacancies);

    $dataTables->make(true);
}

Vacancy.php:

public function team_members()
{
    return $this->belongsToMany('App\Models\Access\User\User')->withPivot('id', 'created_at', 'updated_at');
}

User.php:

public function team_vacancies()
{
    return $this->belongsToMany('App\Vacancy')->withPivot('id', 'created_at', 'updated_at');
}

Я понимаю, что яЯ явно делаю что-то не так, чтобы присоединиться к «вакансиям членов команды» с «вакансиями владельцев», но я не слишком уверен, как поступить правильно.

Я надеюсь, что кто-то мог бы мне помочьили указатья в правильном направлении.

1 Ответ

0 голосов
/ 04 июня 2018

вы должны добавить имя связанной таблицы для обоих методов team_members внутри ваших моделей следующим образом:

public function team_vacancies()
{
    return $this->belongsToMany('App\Vacancy', 'user_vacancy')->withPivot('id', 'created_at', 'updated_at');
}

, и было бы неплохо переименовать ваши методы на vacancies внутри User.phpи teams внутри Vacancy.php

...