2017-01-27 7 views
1

私には、個人用とビジネス用の2種類のユーザーがあります。個人ユーザーはビジネスユーザーに属することができます。それは私がピボットテーブル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'); 
    } 

イムattach()方法を使用して:ピボットテーブルの

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

なおストアデータUserモデルにおいて 私はこの関係を有しています。今私が欲しいものは次のようなものです:

<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、belongsTo関係を使用する必要があります。あなたの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が意図pivot列とcompany関係を持つことになります。

関連する問題