我似乎无法在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);
首先:我必须说您应该将日期信息存储在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);
请参阅: