2017-01-27 6 views
1

У меня есть два типа пользователей: личные и бизнес. Персональный пользователь может принадлежать бизнес-пользователю. Вот что я создал сводную таблицу personal_users_business_user, у которой есть user_id, business_user_id.Как создать правильные отношения?

У меня есть User, PersonalUser и BusinessUser модель. В модели пользователя у меня есть эти отношения:

public function company() 
    { 
      return $this->belongsToMany('App\Models\PersonalUser','personal_users_business_users', 'user_id', 'business_user_id'); 
    } 

Im, используя метод attach():

$user->company()->attach($business_user_id); 

Это хранилище данных в сводной таблице. Теперь то, что я хочу в виду что-то вроде этого:

<input class="typeahead form-control" type="text" name="user_company" @if($user->company->approved == 0) ? disabled : '' @endif value="{{$user->company->company_name}}"> 

Но я не как, как получить доступ к этим полям от пользователя в сводной таблице. Любое предложение?

+0

Личный пользователь может принадлежать нескольким бизнес-пользователям или только одному? – zgabievi

+0

только один ... и бизнес-пользователь может иметь несколько персональных пользователей – None

ответ

1

Если вам нужно, чтобы у Бизнес-пользователя было несколько персональных пользователей, вы должны использовать hasMany, принадлежит к отношениям. В модели BusinessUser вы должны создать метод:

public function personalUsers() { 
    return $this->hasMany(PersonalUser::class); 
} 

И в вашей модели PersonalUser вы должны определить этот метод:

public function businessUser() { 
    return $this->belongsTo(BusinessUser::class); 
} 

В вашей миграции для таблицы персональных пользователей добавить следующее поле:

$table->integer('business_user_id')->unsigned()->nullable(); 

Это сделает ваш код правильным. Для этих отношений вам не нужна сводная таблица.

+0

, если у меня нет сводной таблицы, как я могу утвердить и отклонить? и как у меня будет список персональных пользователей, принадлежащих деловому пользователю? – None

+0

У меня уже есть business_user_id в таблице персональных пользователей, но я установлю его, если бизнес-пользователь одобрит этого пользователя. – None

+0

Вы можете установить утвержденную колонку непосредственно в таблице личных пользователей. И вы можете получить этот список, просто позвонив «BusinessUser-> findOrFail (1) -> personalUsers'. Это даст вам все личные пользователи, связанные с бизнес-пользователем с id 1 – zgabievi

0

Установить отношения как этого

public function company() 
{ 
    return $this->belongsToMany('App\Models\PersonalUser','personal_users_business_users', 'user_id', 'business_user_id') 
      ->withPivot(['your_pivot_column']); 
} 

И теперь, когда вы код

$user = User::with(['company'])->get(); 

$user будет иметь company отношений с предполагаемой pivot колонка.

Смежные вопросы