'object', 'permissions' => 'object', ]; public function account() { return $this->hasOne(Account::class); } public function user_pivot() { return $this->hasOne(User::class)->withPivot('permissions', 'settings', 'is_admin', 'is_owner', 'is_locked'); } public function company_pivot() { return $this->hasOne(Company::class)->withPivot('permissions', 'settings', 'is_admin', 'is_owner', 'is_locked'); } public function user() { return $this->hasOne(User::class, 'id', 'user_id'); } public function company() { return $this->hasOne(Company::class, 'id', 'company_id'); } public function token() { return $this->hasOneThrough( CompanyToken::class, CompanyUser::class, 'user_id', // Foreign key on CompanyUser table... 'company_id', // Foreign key on CompanyToken table... 'user_id', // Local key on CompanyToken table... 'company_id' // Local key on CompanyUser table... ); } }