Laravel 拉维尔枢轴关系

Laravel 拉维尔枢轴关系,laravel,pivot,relationship,Laravel,Pivot,Relationship,我有预订、状态和用户型号。我还有一个透视表booking\u status,其中有一个由创建的额外列,用于跟踪谁更改了预订的状态 因此,当我访问预订状态时,如何获取用户信息: $booking = App\Booking::first(); $statuses = $booking->history_statuses; 因此,当我循环查看视图中的状态时,我希望检索用户的名称。怎么做的 我知道我可以像这样进入这个领域 $status->pivot->created_by 但

我有
预订
状态
用户
型号。我还有一个透视表
booking\u status
,其中有一个由
创建的额外列
,用于跟踪谁更改了预订的状态

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

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

$statuses = $booking->history_statuses;
因此,当我循环查看视图中的
状态时,我希望检索用户的名称。怎么做的

我知道我可以像这样进入这个领域

$status->pivot->created_by

但是,我得到了用户的ID,在视图中按ID获取每个状态的用户是不正确的。

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

预订模式 预约状态模型 用户模型
在你们的关系中使用

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

}

什么时候会有问题?你能分享你所有的模型吗?我已经想到了,但我只是得到了用户的ID。如果我在视图中循环查看状态以显示状态更改的历史记录,我发现如果在视图中我每次都按id查找用户,那么这是错误的。。。我错过什么了吗?谢谢。我想到了类似的事情,但感觉一定有一种更复杂、更优雅的方式,我不知道:)在尝试创建与数据透视表的关系并访问该关系2或3个小时后,我放弃了,并适应了这个怪物……好吧,至少现在我知道我不是唯一一个:D承诺分享的人,如果我遇到更好的解决方案:)但是。。如果我们用它呢?然后我们可以做我上面所做的,但更优雅一些,比如
公共函数user(){return$this->hasManyThrough('user','booking_status');}
我没有测试过这个,但看起来很有希望
public function booking_status(){
    return $this->hasMany(booking_status::class);
} 
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

}