У меня есть следующие отношения таблицы:
organizations
id - integer
organization_users
organization_id - integer (FK)
user_id - integer (FK)
users
id - integer
Я пытаюсь установить красноречивые отношения со всеми пользователями организации. Вот моя модель Organization.php с ее отношениями:
class Organization extends Model
{
public function Users(){
return $this->hasManyThrough('App\User', 'App\OrganizationUser',
'organization_id', 'user_id', 'id');
...
}
Я пробовал много комбинаций этих отношений, таких как
return $this->hasManyThrough('App\User', 'App\OrganizationUser',
'user_id', 'organization_id', 'id');
Но все выдают одну и ту же ошибку (это из первого запроса):
Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not
found: 1054 Unknown column 'organization_users.id' in 'on clause' (SQL: select
`users`.*, `organization_users`.`organization_id` from `users` inner join
`organization_users` on `organization_users`.`id` = `users`.`user_id` where
`organization_users`.`organization_id` = 1)'
Возможно ли, чтобы отношения извлекали user_id для запроса к таблице пользователей вместо того, чтобы Laravel пытался получить организация_users.id? Если нет, есть ли другой способ обойти это?
hasManyThrough
используется для доступа к дистанционным отношениям, например, в сценарии организации много пользователей, а у пользователей много сообщений, поэтому вы можете использовать сообщения организацииhasManyThrough
для доступа к сообщениям организаций косвенно от пользователей. - person Lionel Chan   schedule 25.10.2016