我有这样的关系
因此,必须创建一个数据透视表和一个belongsToMany关系,但我的数据透视表有一些额外的列,例如finished和order
我想要有两种关系,一种是从运动中获取所有步骤,另一种是从运动中获取当前步骤(最后完成的步骤)
我知道如何获得所有步骤
public function steps()
{
return $this->belongsToMany(MovementStep::class, 'movement_movement_steps')
->withPivot('order', 'finished')
->orderBy('pivot_order');
}
Run Code Online (Sandbox Code Playgroud)
但目前的步骤又如何呢?我需要这种关系,但只返回一条记录并能够立即加载它,因为我将其传递给 vue.js
public function current_step()
{
return $this->belongsToMany(MovementStep::class, 'movement_movement_steps')
->withPivot('order', 'finished')
->where('finished', true)
->orderBy('pivot_order', 'desc');
}
Run Code Online (Sandbox Code Playgroud)
请注意,我想在没有额外包的情况下做到这一点
替代解决方案,但带有额外的包: Laravel hasOne 通过数据透视表(不是标记为正确的答案,来自 @cbaconnier 的答案)