PHP code example of mohammad-fouladgar / eloquent-builder
1. Go to this page and download the library: Download mohammad-fouladgar/eloquent-builder library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mohammad-fouladgar / eloquent-builder example snippets
$users = User::where('is_active', true);
if ($request->has('age_more_than')) {
$users->where('age', '>', $request->age_more_than);
}
if ($request->has('gender')) {
$users->where('gender', $request->gender);
}
if ($request->has('has_published_post')) {
$users->whereHas('posts', function ($query) use ($request) {
$query->where('is_published', $request->has_published_post);
});
}
namespace App\EloquentFilters\User;
use Fouladgar\EloquentBuilder\Support\Foundation\Contracts\Filter;
use Illuminate\Database\Eloquent\Builder;
class AgeMoreThanFilter extends Filter
{
public function apply(Builder $builder, mixed $value): Builder
{
return $builder->where('age', '>', $value);
}
}
use App\Models\User;
return EloquentBuilder::model(User::class)
->filters($request->filter)
->thenApply()
->get();
namespace App\EloquentFilters\User;
use Fouladgar\EloquentBuilder\Support\Foundation\Contracts\Filter;
use Illuminate\Database\Eloquent\Builder;
class AgeMoreThanFilter extends Filter
{
public function apply(Builder $builder, mixed $value): Builder
{
return $builder->where('age', '>', $value);
}
}
namespace App\EloquentFilters\User;
use Fouladgar\EloquentBuilder\Concerns\FiltersDatesTrait;
use Fouladgar\EloquentBuilder\Support\Foundation\Contracts\Filter;
use Illuminate\Database\Eloquent\Builder;
class BirthDateFilter extends Filter
{
use FiltersDatesTrait;
public function apply(Builder $builder, mixed $value): Builder
{
return $this->filterDate(
$builder,
$value,
'birth_date'
);
}
}
namespace App\EloquentFilters\User;
use Fouladgar\EloquentBuilder\Concerns\FiltersNumbersTrait;
use Fouladgar\EloquentBuilder\Support\Foundation\Contracts\Filter;
use Illuminate\Database\Eloquent\Builder;
class ScoreFilter extends Filter
{
use FiltersNumbersTrait;
public function apply(Builder $builder, mixed $value): Builder
{
return $this->filterNumber(
$builder,
$value,
'score'
);
}
}
namespace App\EloquentFilters\User;
use Fouladgar\EloquentBuilder\Concerns\SortableTrait;
use Fouladgar\EloquentBuilder\Support\Foundation\Contracts\Filter;
use Illuminate\Database\Eloquent\Builder;
class SortByFilter extends Filter
{
use SortableTrait;
protected array $sortable = [
'birth_date',
'score',
];
public function apply(Builder $builder, mixed $value): Builder
{
return $this->applySort($builder, $value);
}
}
namespace App\Controllers;
use App\Models\User;
use Fouladgar\EloquentBuilder\EloquentBuilder;
use Illuminate\Http\Request;
class UserController
{
public function index(
Request $request,
User $user,
EloquentBuilder $builder
) {
$users = $user->newQuery()
->where('is_active', true);
$builder
->model($users)
->filters($request->filter)
->thenApply();
return $users->get();
}
}
text
app/
└── EloquentFilters/
└── User/
├── AgeMoreThanFilter.php
└── GenderFilter.php
bash
php artisan eloquent-builder:make user age_more_than
bash
php artisan eloquent-builder:make user age_more_than gender