CollectedBy

Custom collection class

Description: Specifies a custom Eloquent collection class to use when retrieving multiple models.

Namespace: Illuminate\Database\Eloquent\Attributes\CollectedBy

Usage

use Illuminate\Database\Eloquent\Attributes\CollectedBy;
use Illuminate\Database\Eloquent\Model;
use App\Collections\PostCollection;

#[CollectedBy(PostCollection::class)]
class Post extends Model
{
}

// App\Collections\PostCollection
use Illuminate\Database\Eloquent\Collection;

class PostCollection extends Collection
{
    public function published(): static
    {
        return $this->filter(fn ($post) => $post->is_published);
    }
}