我正在为我的一所大学课程做一个项目。但我发现很难在User
到User
模型之间建立关系。
表:users
在此表中,列type
用于分类用户类型。
例如:用户可以是distributor
或dealer
类型。
distributor
可能有很多dealer
但dealer
可能只有一个distributor
。
为了实现这一点,我创建了另一个表并命名为dealers_of_distributor
。
表:dealers_of_distributor
虽然我使用了其他模型DelaersOfDistributor
,但确切的关系应该在user
到user
之间。
我怎样才能建立这种关系。我很困惑!
到目前为止我已经尝试过了:
型号: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
。但它显示错误。
答案 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