laravel 使用 orderByRaw() 自定义排序

一般的排序 orderBy('column', 'asc')

现在要求按指定的字符串顺序排序:"FIELD(column,'". implode("','", array_reverse([‘aa’,’bb’,’cc’]))."') desc";

array_reverse 是将数组反序排序后再 desc ,最后得到的还是正序,目的是让不在指定范围内的往后排

假如记录中的column字段存在以下值:[‘cc’,’bb’,’dd’,’aa’,’ff’]

如果使用"FIELD(column,'". implode("','", [‘aa’,’bb’,’cc’])."')";

则得到的是'dd','ff'排在前面,然后才是'aa','bb','cc'

implode("','", [])是为了得到带‘号的拼接数组串,指定字符串列排序需要带上单引号,否则报错(数字则不用)

错误:FIELD(column, aa, bb, cc)

正确:FIELD(column, 'aa', 'bb', 'cc')