2014-10-10 52 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; 
}