在用戶查詢時,有時候有需要把“同城”,“同行”等相關度教高的用戶排在前面的需求。
而使用sql的排序可以簡單的實現這個需求,但也有不全面的地方。
//根據同鄉同行排序
$data = $userModel->with(['hometown','trade','city'])->orderByRaw("ABS({$self->trade_id}
- trade_id) + ABS({$self->hometown_id} - hometown_id) + ABS({$self->city_id} - city_id)")
->orderBy('info_rate','DESC')->paginate($limit,$this->field);
思路如上所示(代碼是laravel的orm語法):
以用戶與被查詢用戶的行業id , 城市id等之間id的差的絕對值作爲 orderBy的字段。