我有一张带有价格列的表格。现在我想按价格获得最近的行。喜欢:如果我给值 1000 需要返回 3,5,6 没有。行。,如果我给值 100 需要返回 1,2 没有。排
打包表演示
id - name - provider_id - price - others_field
1 - name - 1 - 10
2 - name - 1 - 120
3 - name - 1 - 600
4 - name - 1 - 320
5 - name - 1 - 1000
6 - name - 1 - 1020
我通过搜索谷歌尝试了以下方式。但它不能正常工作。
$suggestions = new Pack;
$suggestions = $suggestions->where('status', 1);
$suggestions = $suggestions->where('provider_id', $request->provider_id);
$suggestions = $suggestions->select('*', DB::raw("ABS(price - $request->price) AS distance"))->orderBy('distance');
$suggestions = $suggestions->take(3);
$suggestions = $suggestions->get();
$curent = '';
$suggestion_lower = '';
$suggestion_higher = '';
foreach ($suggestions as $value) {
if ( $request->price == $value->price ) {
$curent = $value;
}
if ( $request->price > $value->price ) {
$suggestion_lower = $value;
}
if ( $request->price < $value->price ) {
$suggestion_higher = $value;
}
}
$suggestions = [
'curent' => $curent,
'suggestion_higher' => $suggestion_higher,
'suggestion_lower' => $suggestion_lower,
];
慕莱坞森
蛊毒传说
30秒到达战场