Подзапрос в красноречии с concat

Я новичок в laravel 5.3 и сталкиваюсь с проблемой подзапросов с красноречием. я не знаю, как написать подзапрос, используя красноречивый. Мой запрос приведен ниже.

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. Итак, как мы можем преобразовать этот запрос в красноречивый. так что будьте добры решить эту проблему


person User101    schedule 18.01.2017    source источник


Ответы (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();
person Eric Tucker    schedule 18.01.2017