Smsma's avatar
Level 2

filter and pagination

when I select category or city it does not work !!

 public function index(Request $request)
    {
       
        $neighborhoods = Neighborhood::get();
        $cities = City::get();   
        $categories = Category::select('id', 'single_name')->get();
        $subCategories = SubCategory::select('id', 'key')->get();
           
       
        $newProperties = new Property;

        if ($request->has('category_id')) {
            $newProperties->whereHas('categories', function ($query) use ($request) {
                $query->whereIn('categories.single_name', $request->input('categories'));
            });
        }
        if ($request->has('city_id')) {
            $newProperties->whereHas('cities', function ($query) use ($request) {
                $query->whereIn('cities.city', $request->input('cities'));
            });
        }

        if( request()->has('sort')) {
            $newProperties = Property::where('is_hide', false)
                                    ->orderby('created_at',request('sort'));
        }   
        
        
        $newProperties =  $newProperties->paginate(5)->appends([
            'category_id' => request('category_id'),
            'city_id' => request('city_id'),
            'sort' => request('sort'),
        ]);

        return view('web.pages.properties',compact('newProperties', 'neighborhoods', 'cities', 'categories','subCategories'));
    }

in properties view:

<div class="profile-details margin-top top-store"><!-- profile-details -->
                    <div class="row">

                        <div class="col-md-3 col-xs-12 pull-right"></div>
                        <div class="col-md-9 col-xs-12 pull-right">
                            <div class="row">
                                <div class="col-md-3 col-xs-12 pull-right">
                                    <p>
                                        <input type="text" id="amount" readonly
                                               style="border:0; color:#f6931f;font-size:16px;text-align: center">
                                    </p>
                                    <div id="slider-range"></div>
                                </div>
                                <div class="col-md-3 col-xs-12 pull-right">
                                <h3><a href="{{route('properties', ['sort' => 'asc'])}}">
                                        <i class="fa fa-sort-amount-asc" aria-hidden="true"></i>{{trans('properties.showNewest')}} </a>
                                    </h3>
                                </div>
                                <div class="col-md-3 col-xs-12 pull-right">
                                    <h3><a href="{{route('properties', ['sort' => 'desc'])}}">
                                        <i class="fa fa-sort-amount-desc" aria-hidden="true"></i>{{trans('properties.showOldest')}}</a>
                                    </h3>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-2 col-xs-12 pull-right"></div>
                        <div class="col-md-10 col-xs-12 pull-right">
                            <div class="margin-top">
                                <div class="row">

                                    <div class="col-md-3 col-sm-6 col-xs-12 pull-right">
                                        <div class="form-group first-form-group">
                                            <select name="neighborhood"  class="form-control" class="neighborhood">
                                                <option value="">{{trans('properties.region')}}</option>
                                                @foreach ($neighborhoods as $neighborhood )
                                                    <a href="{{route('properties', ['neighborhood_id'])}}"><option value="{{$neighborhood->id}}">{{$neighborhood->neighborhood}}</option></a>
                                                @endforeach
                                            </select>
                                        </div>
                                    </div>

                                    <div class="col-md-3 col-sm-6 col-xs-12 pull-right">
                                        <div class="form-group second-form-group">
                                            <select name="city" class="form-control">
                                                    <option value="city_id">{{trans('properties.city')}}</option>
                                                @foreach ($cities as $city )
                                                    <a href="{{route('properties', ['city_id' => $city->id])}}"><option value="{{$city->id}}">{{$city->city}}</option></a>
                                                @endforeach
                                            </select>
                                        </div>
                                    </div>

                                    <div class="col-md-3 col-sm-6 col-xs-12 pull-right">
                                        <div class="form-group third-form-group">
                                            <select name="category" class="form-control" class="category">
                                                <option value="category_id">{{trans('properties.section')}}</option>
                                                @foreach ($categories as $category )
                                                    <a href="{{route('properties', ['category_id' => $category->id])}}"><option value="{{$category->id}}">{{$category->single_name}}</option></a>
                                                @endforeach
                                            </select>
                                        </div>
                                    </div>

                                    <div class="col-md-3 col-sm-6 col-xs-12 pull-right">
                                        <div class="form-group fourth-form-group">
                                            <select name="subcategory" class="form-control">
                                                    <option value="">{{trans('properties.category')}}</option>
                                                @foreach ($subCategories as $subCategory )
                                                    <option value="{{$subCategory->id}}">{{$subCategory->key}}</option>
                                                @endforeach
                                            </select>
                                        </div>
                                    </div>

                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="clearfix"></div>
                <!-- end profile-details -->
                <div class="favorites"><!-- favorites -->
                    <div class="row">
                        @foreach ($newProperties as $property )
                            <div class="col-md-3 col-sm-6 col-xs-12 pull-right"><!-- single box -->
                                <div class="favorite-box single-fav-box estate-box">
                                    <div class="photo">
                                        <a href="{{route('webproperties.show', $property->id)}}">
                                            <img src="{{ URL::asset('public/uploads/properties/'.$property->image) }}" alt="" class="img-responsive">
                                        </a>
                                        <ul class="edit-profile">
                                            <li role="presentation" class="dropdown">
                                                <a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button"
                                                aria-haspopup="true"
                                                aria-expanded="false">
                                                    <i class="fa fa-ellipsis-v" aria-hidden="true"></i>
                                                </a>
                                                <ul class="dropdown-menu">
                                                <li><a href="{{route('properties.follow', $property->id)}}">{{trans('properties.follow')}}</a></li>
                                                    <li><a href="{{route('properties.favorite', $property->id)}}">{{trans('properties.addToFav')}}</a></li>
                                                </ul>
                                            </li>
                                        </ul>
                                    </div>
                                    <div class="box-data">
                                        <h3><a href="{{route('properties.show', $property->id)}}">{{ str_limit($property->name, 20) }}</a></h3>
                                        <h4>{{$property->price}} </h4>

                                        <ul class="likes-subscribers">
                                            @foreach( $property->propertySpecifications as $specification )
                                                @if( $specification->subCategory->input_id == 1 )
                                                <li><a href="">  {{ $specification->subCategory->key }}</a> <span> {{trans('properties.available')}} </span></li>
                                                @else
                                                <li><a href="">{{ $specification->subCategory->key }}</a> <span>  {{ $specification->specification_value }}</span></li>
                                                @endif
                                            @endforeach
                                        </ul>
                                        <div class="row lead evaluation"><!-- star rating -->
                                            <div class="colorstar starrr ratable">
                                                <ul class="emo">
                                                    <li><a href="" class="like-num">{{$property->likes()->count()}}</a></li>
                                                    <li>
                                                        <div class="box">
                                                            <div class="Like"><a class="Like__link"><i class="fa fa-thumbs-up"></i></a>
                                                                <div class="Emojis">
                                                                    <div class="Emoji Emoji--like">
                                                                        <div class="icon icon--like" ></div>
                                                                    </div>
                                                                    <div class="Emoji Emoji--love">
                                                                        <div class="icon icon--heart"></div>
                                                                    </div>
                                                                    <div class="Emoji Emoji--haha">
                                                                        <div class="icon icon--haha"></div>
                                                                    </div>
                                                                    <div class="Emoji Emoji--wow">
                                                                        <div class="icon icon--wow"></div>
                                                                    </div>
                                                                    <div class="Emoji Emoji--sad">
                                                                        <div class="icon icon--sad"></div>
                                                                    </div>
                                                                    <div class="Emoji Emoji--angry">
                                                                        <div class="icon icon--angry"></div>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                    </li>
                                                </ul>
                                            </div>
                                        </div><!-- end star rating -->

                                    </div>

                                </div>
                            </div><!-- end single box -->
                            @endforeach
                        <div class="clearfix"></div>

                        <div class="col-xs-12"><!-- my-pagination -->
                            <ul class="my-pagination">
                                {{$newProperties->links()}} 
                            </ul>
                        </div><!--  end my-pagination -->

                    </div>
                </div>
                <div class="clearfix"></div>
                <!-- end favorites -->

            </div>
        </div>
    </div>
</main>
<div class="clearfix"></div>

0 likes
3 replies
hdsavani's avatar

it seems you are doing wrong on the controller side. You need to do this way:

if ($request->has('category_id')) {
    $newProperties->whereHas('categories', function ($query) use ($request) {
        $query->whereIn('categories.single_name', $request->input('category_id'));
    });
}
if ($request->has('city_id')) {
    $newProperties->whereHas('cities', function ($query) use ($request) {
        $query->whereIn('cities.city', $request->input('city_id'));
    });
}

OR THIS WAY

if ($request->has('category_id')) {
    $newProperties->whereHas('categories', function ($query) use ($request) {
        $query->whereIn('categories.id', $request->input('category_id'));
    });
}
if ($request->has('city_id')) {
    $newProperties->whereHas('cities', function ($query) use ($request) {
        $query->whereIn('cities.id', $request->input('city_id'));
    });
}

I hope you can try this...

2 likes

Please or to participate in this conversation.