ControllerでDBのデータをFetchして、Bladeで絞り込みしていますが、Price Sliderはしっかり動いていません。販売価格を絞り込んだ時、絞り込んだ範囲以外の価格のデータも表示されてしまいます。これはなぜでしょうか。この問題はどうすればいいでしょうか。

Controller:

public function search(Request $request)
    {
        $q = $request->q;
        $sortbyprice = $request->sortbyprice;
        $region = $request->region;
        $rooms = $request->rooms;
        $price = $request->price;
        $max = $request->input('max');
        $min = $request->input('min');

        $paginationData = [
            'q' => $q
        ];

        $estates = \DB::table('allestates')
            ->where('lat', '!=', '')
            ->where('lng', '!=', '')
            ->where('price', '!=', '')
            ->when($q, function($query, $q) use ($paginationData) {
                $paginationData['q'] = $q;
                return $query->where(function($query) use ($q) {
                            $query->where("building_name", "LIKE", "%" . $q . "%")
                                ->orWhere("address", "LIKE", "%" . $q . "%")
                                ->orWhere("company_name", "LIKE", "%" . $q . "%")
                                ->orWhere("region", "LIKE", "%" . $q . "%")
                                ->orWhere("rooms", "LIKE", "%" . $q . "%");
                        });
            })
            ->when($sortbyprice, function($query, $order) use ($paginationData) {
                if(!in_array($order, ['asc','desc'])) {
                    $order = 'asc';
                }
                $paginationData['sortbyprice'] = $order;
                return $query->orderBy('price', $order);

            }, function($query) {
                return $query->orderBy('price');
            })
            ->when($region, function($query, $regionId) use ($paginationData) {
                $paginationData['region'] = $regionId;
                return $query->where('region', $regionId);
            })
            ->when($rooms, function($query, $roomsId) use ($paginationData) {
                $paginationData['rooms'] = $roomsId;
                return $query->where('rooms', "LIKE", "%" . $roomsId . "%");
            })
            ->when($max, function($query, $max) use ($min, $paginationData) {
                $paginationData['min'] = $min;
                $paginationData['max'] = $max;
                return $query->whereBetween('price', [$min, $max]);
            })
            // ->toSql()
            ->paginate(100);

上のコードのように、MinとMaxのインプットをRequestしています。
JSコードは下記の通りです。

var $slider = $('#range').get(0);
var $min = $('#min');
var $max = $('#max');
var minVal = 0;
var maxVal = 10000;
var gap = 5;

noUiSlider.create($slider, {
  start: [ minVal - gap, maxVal + gap ],
  connect: true,
  step: gap,
  range: {
    'min': minVal - gap,
    'max': maxVal + gap
  },
  pips: {
    mode: 'range',
    density: gap
  }
});

$slider.noUiSlider.on('update', function( values, handle ) {

  var value = Math.floor(values[handle]);

  if ( handle ) {
    $max.get(0).value = value;
  } else {
    $min.get(0).value = value;
  }

  $('.noUi-value-large').text(minVal);
  $('.noUi-value-large:last-child').text(maxVal);

  if ( $min.get(0).value <= minVal || $min.get(0).value > maxVal ){
    $min.val('');
  }
  if ( $max.get(0).value <= minVal || $max.get(0).value > maxVal ){
    $max.val('');
  }

});

$min.get(0).addEventListener('change', function(){
  $slider.noUiSlider.set([this.value, null]);
});

$max.get(0).addEventListener('change', function(){
  $slider.noUiSlider.set([null, this.value]);
});

ですが、例えば、3000から5000までで絞り込んだ時、5000以上の価格からのものも表示されてしまいます。絞り込んだ範囲を価格だけを正しく表示することができません。Rowのデータの形は「4,290万円〜9,490万円」です。イメージ

Rowの表示の仕方の問題でしょうか。JSでそれをどうやって直すことができますか?