🚧 Commence les 1er filtres avec la pagination

This commit is contained in:
2020-07-23 17:21:26 +02:00
parent 49248fb16b
commit a8d9309103
6 changed files with 132 additions and 3 deletions

View File

@@ -4,6 +4,7 @@ namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
use Spatie\QueryBuilder\QueryBuilder;
class Home extends Model
{
@@ -21,4 +22,14 @@ class Home extends Model
{
return Str::words($this->description, 10);
}
public function scopePriceMax(QueryBuilder $query, $price): QueryBuilder
{
return $query->where('price', '<=', $price);
}
public function scopePriceMin(QueryBuilder $query, $price): QueryBuilder
{
return $query->where('price', '>=', $price);
}
}

View File

@@ -5,6 +5,8 @@ namespace App\Http\Controllers;
use App\Home;
use App\Parser;
use Illuminate\Http\Request;
use Spatie\QueryBuilder\AllowedFilter;
use Spatie\QueryBuilder\QueryBuilder;
class HomeController extends Controller
{
@@ -15,7 +17,16 @@ class HomeController extends Controller
*/
public function index()
{
$homes = Home::all();
$homes = QueryBuilder::for(Home::class)
// ->allowedFilters(['price', 'surface', 'garden_surface'])
->allowedFilters([
AllowedFilter::scope('price_min'),
AllowedFilter::scope('price_max'),
])
->defaultSort('-created_at') // https://docs.spatie.be/laravel-query-builder/v2/features/sorting/#basic-usage
->paginate(4)
->appends(request()->query());
return view('homes.home', ['homes' => $homes]);
}