我有下表:
零件:
id | name
1 | Lock
2 | Light
货架:
id | name
1 | 1A
2 | 1B
part_shelf
id | part_id | shelf_id | stock
1 | 1 | 1 | 5
2 | 1 | 2 | 10
3 | 2 | 1 | 4
关系:
在零件模型中:
public function shelves()
{
return $this->belongsToMany( Shelf::class )->withPivot( 'stock' );
}
在货架型号中:
public function parts()
{
return $this->belongsToMany(Part::class)->withPivot('stock');
}
我想做的是根据数据透视表的总库存订购所有零件。
我尝试过的是:
$parts = Part::all(); // This is inside controller
@foreach($parts->shelves()->orderBy('pivot_stock', 'desc') as $part)
@foreach($parts->shelves()->orderBy('part_shelf.stock', 'desc') as $part)
我确实知道我可以通过以下方式获得单个零件的总库存:
$part->shelves()->sum('stock')
我只是不知道该如何在foreach循环的所有部分中使用它。
还查看了其他问题,但这并没有真正帮助:
答案 0 :(得分:0)
我有类似的问题。我有三张桌子。玩家(在我的代码“ Igrac”中),锦标赛(在我的代码“ Turnir_Piramida”中)和players_tournaments数据透视表(在我的代码“ Nastup_piramida”中)。在数据透视表中,每个锦标赛中每个玩家的得分也是列点。而且我需要总结每个玩家的得分,然后按得分总和对表格进行排序。
我设法通过您发布的第三个链接来做到这一点。您可以在此link
上看到我的解决方案