2017-08-13 24 views
0

私の大学のコースのプロジェクトを行っています。しかし、私はUserからUserモデルまでの間に関係を作るのが難しいと思っています。ユーザーからユーザーへのモデル:Laravelの1対多の関係

表:この表ではusers

  • ID
  • メール
  • タイプ
  • パスワード

typeは、ユーザーの種類を分類するために使用されます。 例:ユーザーはdistributorまたはdealerのいずれかのタイプになります。

そしてdistributorは多くのdealer を有することができる。しかしdealerは一つだけdistributorを有することができます。

これを実装するために、別のテーブルを作成してdealers_of_distributorという名前を付けました。

表:dealers_of_distributor

  • ID
  • distributor_id(ユーザテーブルのID)
  • dealer_id(ユーザテーブルのID)

Iは、追加モデルDelaersOfDistributorを使用したが、正確な関係は、userからuserの間でなければなりません。

どうすればこの関係を作ることができますか?よくわかりません!

私がこれまで試した: モデル:User

public function dealersOfDistributor(){ 
    $this->hasMany('App\DealersOfDistributor'); 
} 

モデル:bladeファイルでDealersOfDistributor

public function user(){ 
    return $this->belongsTo('App\User'); 
} 

DistributorsController

public function index() 
{ 
    $distributors=User::where('type', 'distributor')->get(); 
    $dealers=User::where('type', 'dealer')->get(); 
    $assignedDealers=DealersOfDistributor::all(); 

    return view('distributors.index')->withDistributors($distributors)->withDealers($dealers)->with('assignedDealers', $assignedDealers); 
} 

:私はを試してみたが。しかし、それはエラーを表示しています。

答えて

1

モデルDealersOfDistributor:

public function distributorUser() 
{ 
    return $this->belongsTo('App\User', 'distributor_id', 'id'); 
} 

public function dealerUser() 
{ 
    return $this->belongsTo('App\User', 'dealer_id', 'id'); 

} 

あなたはちょうどあなたがdealer_idからユーザーのデータを取得したい場合DealersOfDistributorモデル、コール機能dealerUserからユーザーのデータを取得し、あなたがdistribution_id

からユーザーのデータを取得したい場合は、関数distributionUserを呼び出すよりも、

コントローラー:

public function index() 
{ 
    $assignedDealers=DealersOfDistributor::all(); 

    return view('distributors.index',compact('assignedDealers')); 
} 

ブレードユーザー名を取得する:

@foreach($assignedDealers as $assign) 


    {{$assign->distributorUser->name}} 
{{$assign->dealerUser->name}} 

    @endforeach 
+0

しかし、 'Blade'ファイルでどのようにユーザー名を取得できますか? –

+0

ありがとう、あなたは私の命の恩人です。 –

+0

さらにもう1つ、コントローラ@Vynartによって 'dealers_of_distributor'テーブルのデータを'同期 'する方法 –