用户到用户模型:Laravel上的一对多关系

时间:2017-08-13 15:04:34

标签: laravel laravel-5

我正在为我的一所大学课程做一个项目。但我发现很难在UserUser模型之间建立关系。

表: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 个答案:

答案 0 :(得分:1)

Model DealersOfDistributor:

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

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

}

只是从DealersOfDistributor模型中获取用户数据,如果要从dealer_id获取用户数据,请调用函数dealerUser,如果要从distribution_id获取用户数据,则调用函数distributionUser

控制器:

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

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

Blade获取用户名:

 @foreach($assignedDealers as $assign)


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

     @endforeach