复杂的Laravel关系生成视图

时间:2015-05-09 05:06:15

标签: mysql laravel eloquent laravel-5 relationships

我的订单包含存储在items表中的任意数量的项目(因此两者之间的belongsToMany关系)。这些项目也按项目类型分类。在创建或编辑订单时,我想加载所有项目,按项目类型分类,该订单是否包含任何项目。我能够通过以下方式将其提升:

$itemtypes = \App\Itemtype::with('items')
            ->orderBy('id','asc')
            ->get();

然后我循环:

@foreach( $itemtypes as $itemtype )
  {{$itemtype->name}}
  @foreach( $itemtype->items as $item )
    {{$item->name}}
  @endforeach
@endforeach

这给了我类似的东西:

NICU项目 - 婴儿毯 - 串珠婴儿拥抱者

杂项 - 合身床单 - 超细纤维毛巾

但是,当我访问具有item_order记录的特定订单时,我想显示已保存的数量(存储在数据透视表中)。我知道一种方法是为每个创建的订单将所有项目的记录添加到item_order,但这似乎效率很低。

Item.php

public function orders() {
  return $this->belongsToMany('App\Order', 'item_order', 'item_id', 'order_id') -> withPivot('id','quantity','createdby_user_id','weight','cost_billed', 'calc_by_weight', 'track_units');
}

Order.php

public function items() {
  return $this -> belongsToMany('App\Item', 'item_order', 'order_id', 'item_id') -> withPivot('id','quantity','quantity_received','quantity_delivered','notes', 'createdby_user_id', 'weight', 'cost_billed', 'calc_by_weight', 'track_units');
}

更新

我正在寻找解决方案。我将集合转换为数组,加载所有项目,根据需要修改数组,然后使用array_merge替换item_order中已有数量的项目。

这一切都很有效 - 我现在唯一的问题是,当我加载订单时,商品有一个商品类型 - 分类,我想将它们分组那个。我不确定如何在关系中添加groupby。如果我把它弄清楚,我会发布完整的答案。

0 个答案:

没有答案