Я работаю на внутренней PMS, где у меня есть четыре модели: User
, Company
, Client
и Project
.
Один Company
будет иметь несколько Users
,и через Company
, User
будет иметь доступ ко многим Clients
и Projects
. Ничего особенного, просто классическая PMS с компанией, клиентами, пользователями и проектами.
Модель User
имеет поле company_id
(в данный момент один пользователь может быть связан только с одной компанией). Модель Client
также имеет поле company_id
. С этим я думал, что у меня может быть HasManyThrough
отношение для User
и Client
, и я попробовал это:
public function clients()
{
return $this->hasManyThrough( Client::class, Company::class );
}
Однако, это возвращает
SQLSTATE[HY000]: общая ошибка: 1 нет такого столбца: companies.user_id (SQL:
select "clients".*, "companies"."user_id" as "laravel_through_key"
from "clients"
inner join "companies"
on "companies"."id" = "clients"."company_id"
where "companies"."user_id" = 1
and "clients"."deleted_at" is null
В моей базе данных companies.user_id
не существует, поскольку это отношение определяется users.company.id
. Было бы лучше написать необработанный запрос SQL?