2017-08-13 81 views
0

我正在为我的大学课程之一进行项目。但是我发现难以在UserUser模型之间建立关系。用户对用户模型:Laravel一对多关系

表:users

  • ID
  • 电子邮件
  • 密码

在此表中的列type用于分类用户类型。 例如:用户可以是distributordealer类型。

distributor可能有许多dealerdealer可能只有一个distributor

为了实现这个我创建了另一个表格,并命名为dealers_of_distributor

表:dealers_of_distributor

  • ID
  • distributor_id(用户表的ID)
  • dealer_id(用户表的ID)

虽然我使用的附加模型DelaersOfDistributor,确切的关系应该在useruser之间。

我该如何建立这种关系。我很困惑!

我试过到目前为止: 型号:User

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

型号: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); 
} 

blade文件:我已经试过$assignedDealer->dealer_id->user->name。但它显示错误。

回答

1

型号DealersOfDistributor:

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

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

} 

比你刚刚从DealersOfDistributor模式,通话功能dealerUser得到了用户的数据,如果你想摆脱dealer_id用户的数据,并调用函数distributionUser如果你想从distribution_id

获取用户数据

控制器:

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

还有一件事,我怎么能控制'dealer_of_distributor'表中的'sync'数据由@Vynart –