HasManyThroug 关系返回 SQL 错误

HasManyThroug relations is returning SQL error

我正在开发内部 PMS,其中有四个模型:UserCompanyClientProject

一个Company会有多个Users,通过CompanyUser就会有很多ClientsProjects.这里没什么特别的,只是一个包含公司、客户、用户和项目的经典 PMS。

User模型有一个company_id字段(一个用户目前只能关联一个公司)。 Client 模型也有一个 company_id 字段。有了这个,我想我可以为 UserClient 建立 HasManyThrough 关系,我试过这个:

public function clients()
{
    return $this->hasManyThrough( Client::class, Company::class );
}

然而,这 returns

SQLSTATE[HY000]: General error: 1 no such column: 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 查询会更好吗?

或者可以只使用两个关系,例如:

// User Model
[.....]
public function company()
{
    return $this->belongsTo( Company::class, [YOUR_FK_HERE] );
}

public function clients()
{
    return $this->company->clients();
}
[....]

在公司模型中

// Company Model
[....]
public function clients()
{
    return $this->hasMany( Client::class, [YOUR_FK_HERE] );
}
[....]