Laravel获取所有相关模型的范围

时间:2014-10-10 08:40:54

标签: php laravel eloquent

我已经被困了几天试图得到一些我认为应该非常简单的东西但是我找不到合适的解决方案,

我有以下模型(只打印重要的方法)

顺序
 ID
 created_at

OrderContent
 ID
 order_id

我的订单范围

scopeByRange($query,$d1,$d2){
  return $query->whereBetween('created_at',[$d1,$d2])
}

哪种方法很完美,我想要的是一个包含OrderScope中所有orderContents的集合

这样的东西

$orderContents = Order::byRange($d1,$d2)->allOrderContents;

所以我不需要做一个bucle并合并集合

有办法吗?

1 个答案:

答案 0 :(得分:1)

感谢@JarekTkaczky指出我正确的方向, 我的最终功能是以下功能,只是为报告做一些额外的计算

public static function byDateRange($d1,$d2){

    $orderContents = null;
    Order::byDateRange($d1,$d2)->with(['contents' => function($q) use(&$orderContents){
        $orderContents = $q->select('*',
                                DB::raw('sum(quantity) as quantity_sum'),
                                DB::raw('sum(total) as total_sum'))
                            ->groupBy('item_id')
                            ->orderBy('total_sum','DESC')
                            ->get()->unique();
    },'contents.item'])->get();

    return $orderContents;
}