Size: a a a

Laravel для начинающих

2020 September 13

С

Сидредин in Laravel для начинающих
Haybulla Musaev
Ребят, добрый день. Позвольте вопрос по eloquent.

Есть 3 таблицы - доктора, клиенты, КлиентКурс, как связь клиента и некоего курса в системе.

doctor
   id - integer
   name - string

client_course
   id - integer
   course_id - integer
   doctor_id - integer
   client_id - integer

client
   id - integer
   name - string

То есть доктор назначается на конкретный курса, а не закрепляется за клиентом. Как прокинуть связь, чтобы внутри модели доктора можно было зацепить всех клиентов, назначенных на курсы? Я пробовал так:

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

Но на это вылетает ошибка
Column not found: 1054 Unknown column 'clients.client_course_id' in 'on clause'

Можно ли в рамках моей структуры сделать такой проброс? В примере из документации структура несколько иная.
Возможно, тут найдешь ответ https://laravel.demiart.ru/many-to-many-relationship/
источник

HM

Haybulla Musaev in Laravel для начинающих
Так это разве многие ко многим?
источник

AI

Alexey Illarionov in Laravel для начинающих
Haybulla Musaev
Ребят, добрый день. Позвольте вопрос по eloquent.

Есть 3 таблицы - доктора, клиенты, КлиентКурс, как связь клиента и некоего курса в системе.

doctor
   id - integer
   name - string

client_course
   id - integer
   course_id - integer
   doctor_id - integer
   client_id - integer

client
   id - integer
   name - string

То есть доктор назначается на конкретный курса, а не закрепляется за клиентом. Как прокинуть связь, чтобы внутри модели доктора можно было зацепить всех клиентов, назначенных на курсы? Я пробовал так:

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

Но на это вылетает ошибка
Column not found: 1054 Unknown column 'clients.client_course_id' in 'on clause'

Можно ли в рамках моей структуры сделать такой проброс? В примере из документации структура несколько иная.
источник

AH

Andrey Helldar in Laravel для начинающих
Haybulla Musaev
Ребят, добрый день. Позвольте вопрос по eloquent.

Есть 3 таблицы - доктора, клиенты, КлиентКурс, как связь клиента и некоего курса в системе.

doctor
   id - integer
   name - string

client_course
   id - integer
   course_id - integer
   doctor_id - integer
   client_id - integer

client
   id - integer
   name - string

То есть доктор назначается на конкретный курса, а не закрепляется за клиентом. Как прокинуть связь, чтобы внутри модели доктора можно было зацепить всех клиентов, назначенных на курсы? Я пробовал так:

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

Но на это вылетает ошибка
Column not found: 1054 Unknown column 'clients.client_course_id' in 'on clause'

Можно ли в рамках моей структуры сделать такой проброс? В примере из документации структура несколько иная.
Можно указать имена колонок

https://laravel.com/docs/8.x/eloquent-relationships#has-many-through
источник

AI

Alexey Illarionov in Laravel для начинающих
Это не просто многие ко многим
источник

AI

Alexey Illarionov in Laravel для начинающих
это сквозная же
источник

HM

Haybulla Musaev in Laravel для начинающих
Alexey Illarionov
это сквозная же
Во-во
источник

AI

Alexey Illarionov in Laravel для начинающих
и да, проблема в именовании колонок
источник

HM

Haybulla Musaev in Laravel для начинающих
Alexey Illarionov
и да, проблема в именовании колонок
Я всю голову сломал, как исправить? Подскажете?
источник

AI

Alexey Illarionov in Laravel для начинающих
Вот же тебе скинули
источник

С

Сидредин in Laravel для начинающих
Haybulla Musaev
Так это разве многие ко многим?
да вроде. У одного врача много клиентов, и у клиентов может быть несколько врачей. Но если только один врач, то да, один ко многим
источник

AI

Alexey Illarionov in Laravel для начинающих
И я тебе скинул
источник

AI

Alexey Illarionov in Laravel для начинающих
Сидредин
да вроде. У одного врача много клиентов, и у клиентов может быть несколько врачей. Но если только один врач, то да, один ко многим
У него связь не напрямую а через пивот таблицу
источник

AI

Alexey Illarionov in Laravel для начинающих
Поэтому hasManyThrough с кастоными именами полей
источник

С

Сидредин in Laravel для начинающих
Alexey Illarionov
это сквозная же
аа
источник

С

Сидредин in Laravel для начинающих
понял
источник

AI

Alexey Illarionov in Laravel для начинающих
Ты все правильно написал, просто имена колонок укажи свои
источник

AH

Andrey Helldar in Laravel для начинающих
Haybulla Musaev
Я всю голову сломал, как исправить? Подскажете?
источник

А

Андрей in Laravel для начинающих
Haybulla Musaev
Ребят, добрый день. Позвольте вопрос по eloquent.

Есть 3 таблицы - доктора, клиенты, КлиентКурс, как связь клиента и некоего курса в системе.

doctor
   id - integer
   name - string

client_course
   id - integer
   course_id - integer
   doctor_id - integer
   client_id - integer

client
   id - integer
   name - string

То есть доктор назначается на конкретный курса, а не закрепляется за клиентом. Как прокинуть связь, чтобы внутри модели доктора можно было зацепить всех клиентов, назначенных на курсы? Я пробовал так:

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

Но на это вылетает ошибка
Column not found: 1054 Unknown column 'clients.client_course_id' in 'on clause'

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

HM

Haybulla Musaev in Laravel для начинающих
Щас попробую, спасибо за совет. Отпишусь через несколько минут
источник