Laravel Pivot关系

时间:2019-02-12 09:13:50

标签: laravel pivot relationship

我有BookingStatusUser模型。我还有一个数据透视表booking_status,其中包含额外的列created_by,用于跟踪谁更改了预订状态。

当我访问预订状态时,如何获取用户信息:

$booking = App\Booking::first();

$statuses = $booking->history_statuses;

因此,当我在视图中遍历那些statuses时,我想检索用户名。怎么做?

我知道我可以像访问该字段一样

$status->pivot->created_by

但是随后我得到了用户的ID,因此在视图中按状态获取用户的每种状态并不正确。

2 个答案:

答案 0 :(得分:1)

在您的人际关系中使用

public function booking_status(){
    return $this->hasMany(booking_status::class)->withPivot('created_by');
}  

然后您可以使用

进行访问
$booking = App\Booking::first();

$statuses = $booking->history_statuses;

foreach($statuses as $status){

   $status->pivot->created_by // this is your element

}

答案 1 :(得分:0)

假设从预订到状态之间存在多对多的关系。现在您要创建一个从枢轴到用户的关系。
我昨天看了两个小时。
我想到的解决方案是从预订到枢纽,再到状态。
像这样的东西应该工作

预订模型

public function booking_status(){
    return $this->hasMany(booking_status::class);
}  

booking_status模型

public function status(){
    return $this->belongsTo(status::class);
} 
public function user(){
    return $this->belongsTo(status::class);
}

用户模型

public function booking_status(){
    return $this->hasMany(booking_status::class);
}