2014-10-10 26 views
0

我一直停留几天试图让我觉得应该是很简单的事,但我没能找到合适的解决方案,Laravel获取所有realated型号范围

我有以下型号(刚打印的重要方法)

订购
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;

所以我没有已经做了一个淘气和合并收集

有没有办法?

+1

重复的,看看这个答案的http://计算器。 COM /问题/ 26187043 /雄辩一对多一对多一对多#26187648 – 2014-10-10 09:07:11

回答

0

感谢@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; 
}