UseEloquentBuilder

Specify a custom Eloquent builder class

Description: Specifies a custom Eloquent builder class to use for the model, replacing the default builder.

Namespace: Illuminate\Database\Eloquent\Attributes\UseEloquentBuilder

Usage

use Illuminate\Database\Eloquent\Attributes\UseEloquentBuilder;
use Illuminate\Database\Eloquent\Model;
use App\Builders\PostBuilder;

#[UseEloquentBuilder(PostBuilder::class)]
class Post extends Model
{
}

// App\Builders\PostBuilder
use Illuminate\Database\Eloquent\Builder;

class PostBuilder extends Builder
{
    public function published(): static
    {
        return $this->where('is_published', true);
    }

    public function featured(): static
    {
        return $this->where('is_featured', true);
    }
}

// Usage:
Post::query()->published()->featured()->get();