2017-01-18 63 views
0

我是新的laravel 5.3並面對子查詢與雄辯的問題。我不知道如何使用口才寫出子查詢。我的查詢如下。在與concat雄辯的子查詢

select concat(m, '-', y), total 
FROM (
    select month(`date`) as m , year(`date`) as y, round(sum(amount)) as total 
    from `budget` 
    where 
     `user_id` = 1 and 
     `amount` is not null 
    group by m, y 
) as t 

這在MySQL中工作正常。所以我們如何才能以雄辯的方式轉換此查詢。所以懇請解決這個問題

回答

1

您需要創建子查詢首先,您可以合併父查詢中的綁定:

$sub = Budget::selectSub('month(`date`)', 'm') 
    ->selectSub('year(`date`)', 'y') 
    ->selectSub('round(sum(amount))', 'total') 
    ->where('user_id', 1) 
    ->whereNotNull('amount') 
    ->groupBy('m', 'y'); 

$data = DB::table(DB::raw("({$sub->toSql()}) as t")) 
    ->mergeBindings($sub->getQuery()) 
    ->selectRaw("concat(m, '-', y)") 
    ->addSelect('total') 
    ->get(); 
+0

感謝埃裏克。它正在工作。 – User101