我有一个称为点(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
答案 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”作为列名,那就更好了。