相关疑难解决方法(0)

Laravel - 通过带有急切负载的数据透视表的一对一关系

我有这样的关系

  • 一个运动可以有多个步骤
  • 一个步骤可以属于多个动作

因此,必须创建一个数据透视表和一个belongsToMany关系,但我的数据透视表有一些额外的列,例如finishedorder

我想要有两种关系,一种是从运动中获取所有步骤,另一种是从运动中获取当前步骤(最后完成的步骤)

我知道如何获得所有步骤

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 的答案)

eager-loading laravel

5
推荐指数
1
解决办法
1893
查看次数

标签 统计

eager-loading ×1

laravel ×1