core icon indicating copy to clipboard operation
core copied to clipboard

Support for BackedEnumFilter

Open mremi opened this issue 1 year ago • 1 comments

Description

Is a new Doctrine filter BackedEnumFilter could be interesting for filtering an entity using backed enum?

Example

Could be used in this way:

<?php

namespace App\Entity;

#[ORM\Entity(repositoryClass: UserRepository::class)]
#[ApiResource(
    operations: [
        new Get(normalizationContext: ['groups' => 'user:item']),
        new GetCollection(normalizationContext: ['groups' => 'user:list']),
    ],
)]
#[ApiFilter(BackedEnumFilter::class, properties: ['status'])]
class User
{
    #[ORM\Column(enumType: UserStatus::class, options: ['default' => UserStatus::Active])]
    #[Groups(['user:list', 'user:item'])]
    private UserStatus $status = UserStatus::Active;
}

with an Enum like this:

<?php

enum UserStatus: string
{
    case Active = 'active';
    case Blocked = 'blocked';
}

mremi avatar Aug 09 '24 14:08 mremi

Why not indeed!

soyuka avatar Aug 09 '24 19:08 soyuka

Great feature! Makes me think, what about allowing to exclude certain enum values from the filtering? For example, based on a permission schema "provider" or some other of the more complex use-cases? Worth creating a ticket for that?

rvanlaak avatar Sep 22 '24 15:09 rvanlaak