Laravel按特定列的顺序等于id

时间:2019-06-27 06:52:40

标签: mysql laravel

我有一个称为点(id,name,with)列的表,该列通过id描述了与另一个点相关的哪个点,我需要选择这些数据,按与laravel等价的,与另一个相关的每个点进行排序

id   name   with
 1    point1  3
 2    point2  6
 3    point3  1
 4    point4  5
 5    point5  4
 6    point6  2

$data = $this->model
        ->select('id', 'name', 'with')
        ->where('with', '!=', NULL)
        ->orderByRaw(DB::raw("FIELD('id', 'with')"));

我需要这样的东西:

id   name   with
1    point1  3
3    point3  1
2    point2  6
6    point6  2
4    point4  5
5    point5  4

1 个答案:

答案 0 :(得分:0)

这应该可以按您希望的那样工作!

已编辑

$data = $this->model
        ->select(DB::raw('id, name, with, CONCAT( GREATEST(id,with) , LEAST(id,with)) as sortCrit' )
        ->whereNotNull('with')
        ->orderBy('sortCrit');

顺便说一句,如果您不使用“ with”作为列名,那就更好了。