@muhasa

Ко многим через в laravel eloquent — как сделать хитрый запрос?

Здравствуйте.
Есть 3 таблицы - доктора, клиенты, КлиентКурс, как связь клиента и некоего курса в системе.
*client_course*
id
name
doctor_id
client_id


То есть доктор назначается на конкретный курса, а не закрепляется за клиентом.
Как прокинуть связь, чтобы внутри модели доктора можно было зацепить всех клиентов, назначенных на курсы?
Я пробовал так
public function clients()
    {
	    return $this->hasManyThrough('App\Client', 'App\ClientCourse');
    }

на что получил
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'clients.client_course_id' in 'on clause' (SQL: select `clients`.*, `client_course`.`doctor_id` as `laravel_through_key` from `clients` inner join `client_course` on `client_course`.`id` = `clients`.`client_course_id` where `client_course`.`doctor_id` = 1)


Что делаю не так?..
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 2
@kami16ru
on `client_course`.`id` = `clients`.`client_course_id`

У тебя тут ошибка явно.

public function clients()
{
return $this->hasManyThrough('App\Client', 'App\ClientCourse');
}

У тебя связь же много ко многим, просто hasMany(Client::class)
Ответ написан
Комментировать
@jazzus
На выбор:
public function clients()
{
    return $this->hasManyThrough(
        Client::class, 
        ClientCourse::class,
        'doctor_id',
        'id',
        'id',
        'client_id'
    );
}

public function clients()
{
    return $this->belongsToMany(Client::class, 'client_courses');
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы