✨ Ajoute les filtres
This commit is contained in:
20
app/Home.php
20
app/Home.php
@@ -32,4 +32,24 @@ class Home extends Model
|
||||
{
|
||||
return $query->where('price', '>=', $price);
|
||||
}
|
||||
|
||||
public function scopeSurfaceMax(QueryBuilder $query, $price): QueryBuilder
|
||||
{
|
||||
return $query->where('surface', '<=', $price);
|
||||
}
|
||||
|
||||
public function scopeSurfaceMin(QueryBuilder $query, $price): QueryBuilder
|
||||
{
|
||||
return $query->where('surface', '>=', $price);
|
||||
}
|
||||
|
||||
public function scopeGardenSurfaceMax(QueryBuilder $query, $price): QueryBuilder
|
||||
{
|
||||
return $query->where('garden_surface', '<=', $price);
|
||||
}
|
||||
|
||||
public function scopeGardenSurfaceMin(QueryBuilder $query, $price): QueryBuilder
|
||||
{
|
||||
return $query->where('garden_surface', '>=', $price);
|
||||
}
|
||||
}
|
||||
|
@@ -18,13 +18,18 @@ class HomeController extends Controller
|
||||
public function index()
|
||||
{
|
||||
$homes = QueryBuilder::for(Home::class)
|
||||
// ->allowedFilters(['price', 'surface', 'garden_surface'])
|
||||
->allowedFilters([
|
||||
AllowedFilter::scope('price_min'),
|
||||
AllowedFilter::scope('price_max'),
|
||||
|
||||
AllowedFilter::scope('surface_min'),
|
||||
AllowedFilter::scope('surface_max'),
|
||||
|
||||
AllowedFilter::scope('garden_surface_min'),
|
||||
AllowedFilter::scope('garden_surface_max'),
|
||||
])
|
||||
->defaultSort('-created_at') // https://docs.spatie.be/laravel-query-builder/v2/features/sorting/#basic-usage
|
||||
->paginate(4)
|
||||
->paginate(10)
|
||||
->appends(request()->query());
|
||||
|
||||
return view('homes.home', ['homes' => $homes]);
|
||||
|
@@ -3,6 +3,7 @@
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -23,6 +24,9 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
//
|
||||
Str::macro('currency', static function ($price)
|
||||
{
|
||||
return sprintf('%s €', number_format($price, 0, ',', ' '));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user