【问题标题】:Select month only from Datetime in Laravel仅从 Laravel 中的日期时间中选择月份
【发布时间】:2016-12-15 05:42:43
【问题描述】:

我无法仅从 datetime 中选择月份部分。我在表事务中有一个名为 payment_date 的列。我想select * from transactiongroup by payment_date 月份。我试过这段代码:

$selectedYearTrx = $connectDB->table('transaction')                                  
    ->join('payment_channel','transaction.payment_channel_id','=','payment_channel.id') 
    ->select('id','payment_date', 'payment_channel_id','amount',DB::raw('MONTH(payment_date) as monthPayment'))
    ->whereYear('payment_date', '=', $year)
    ->where('status','=','S')
    ->wherein('payment_channel_id', [1,2,3])
    ->where('currency','=','IDR')
    ->orderBy('id', 'desc')
    ->get()
    ->groupBy('payment_channel_id','id','monthPayment');

但是,我在 group by 中的 monthPayment 中遇到错误。错误是调用成员函数groupby()

谁能帮我解决这个问题?

谢谢。

【问题讨论】:

    标签: mysql laravel datetime select group-by


    【解决方案1】:

    你应该把 ->get() 放在代码的末尾)

    $selectedYearTrx = $connectDB->table('transaction')
                                 ->join('payment_channel','transaction.payment_channel_id','=','payment_channel.id') 
                                 ->select('id','payment_date', 'payment_channel_id','amount',DB::raw('MONTH(payment_date) as monthPayment'))
                                 ->whereYear('payment_date', '=', $year)
                                 ->where('status','=','S')
                                 ->wherein('payment_channel_id', [1,2,3])
                                 ->where('currency','=','IDR')
                                 ->orderBy('id', 'desc')
                                 ->get()
                                 ->groupBy('payment_channel_id','id','monthPayment');
    

    应该是

    $selectedYearTrx = $connectDB->table('transaction')                                 
                                 ->join('payment_channel','transaction.payment_channel_id','=','payment_channel.id') 
                                 ->select('id','payment_date', 'payment_channel_id','amount',DB::raw('MONTH(payment_date) as monthPayment'))
                                 ->whereYear('payment_date', '=', $year)
                                 ->where('status','=','S')
                                 ->wherein('payment_channel_id', [1,2,3])
                                 ->where('currency','=','IDR')
                                 ->orderBy('id', 'desc')
                                 ->groupBy('payment_channel_id','id','monthPayment')->get();
    

    【讨论】:

    • 哦,我的错,谢谢@Nour,但是,我在DB::raw('MONTH(payment_date) as monthPayment') 中遇到了新错误。我收到这样的错误:function month (timestamp without timezone) does not exist。你能帮我处理这个错误吗?
    猜你喜欢
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多