Laravel中按月排序

问题描述 投票:0回答:1

我似乎无法在Laravel 7中获得按月排序的方法。我为我的月,日,年和时间使用不同的列,而不是按月排序,而是按字母顺序对月份进行排序。

预期结果:一月,二月,三月,四月实际结果: 4月,2月,1月,3月

这是我的代码:

$ledgers = Ledger::orderBy('month', 'DESC')
            ->orderBy('day', 'DESC')
            ->orderBy('year', 'DESC')
            ->orderBy('time', 'DESC')
            ->where('user_id', auth()->user()->id)
            ->paginate(8);
laravel eloquent
1个回答
0
投票

首先:我必须说您应该将日期信息存储在datetime列中的数据库中,就像Tim Lewis在评论中所说的...

任何方式您可以使用按字段排序,这种排序使结果根据您提供的字段排序...

$ledgers = Ledger::orderByRaw('FIELD(month,'January','February','March','May', 'June','July','August','September','October','November','December')')
            ->orderBy('day', 'DESC')
            ->orderBy('year', 'DESC')
            ->orderBy('time', 'DESC')
            ->where('user_id', auth()->user()->id)
            ->paginate(8);

请参阅:

https://stackoverflow.com/a/9378709/10573560

© www.soinside.com 2019 - 2024. All rights reserved.