【问题标题】:Sub-query in eloquent with concat带有 concat 的 eloquent 子查询
【发布时间】:2017-06-03 09:10:12
【问题描述】:

我是新的 laravel 5.3 并且面临 eloquent 的子查询问题。我不知道如何使用 eloquent 编写子查询。我的查询如下。

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 中运行良好。那么我们如何才能将这个查询转换成 eloquent。所以请解决这个问题

【问题讨论】:

    标签: eloquent subquery laravel-5.3 laravel-eloquent


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2013-01-07
      相关资源
      最近更新 更多