If you are having trouble with dot notation in EasyAdmin filters and cannot wait for [Use filters on nested properties #4882](https://github.com/EasyCorp/EasyAdminBundle/pull/4882), you can use this workaround. Of course, this code is not optimal and probably does not support all comparison cases, but it can still work as a foundation for your temporary solution. ### Example usage _Tested on EasyAdmin v4.9.4_ **Entities** > For the sake of clarity in the example, all mapping and other methods are omitted. ```php class Location { public string $id; public string $name; public function getNiceName(): string { return \sprint('#%d - %s', $this->id, $this->name); } } class Offer { public string $id; #[ORM\ManyToOne(targetEntity: Location::class))] private Location $location } class Contract { public string $id; #[ORM\ManyToOne(targetEntity: Offer::class))] private Location $offer } class Invoice { public string $id; #[ORM\ManyToOne(targetEntity: Contract::class))] private Location $contract } ``` **Filters** Filter by location, where `Location::class` is assosiated with `Offer::class` `(offer.location)`, and to get `Offer::class` we need to have `Contract::class` `(contract.offer.location)`. ```php class InvoiceCrudController extends AbstractCrudController { public static function getEntityFqcn(): string { return Invoice::class; } public function configureFilters(Filters $filters): Filters { return $filters ->add(AssociatedEntityFilter::new('contract.offer.location', 'Location') ->setFormTypeOptions([ 'value_type_options.class' => Location::class, 'value_type_options.choice_label' => 'getNiceName', ]) ); } } ``` Or filter in `Contract::class` crud ```php class ContractCrudController extends AbstractCrudController { public static function getEntityFqcn(): string { return Contract::class; } public function configureFilters(Filters $filters): Filters { return $filters ->add(AssociatedEntityFilter::new('offer.location', 'Location') ->setFormTypeOptions([ 'value_type_options.class' => Location::class, 'value_type_options.choice_label' => 'getNiceName', ]) ); } } ``` Also works as EntityFilter ```php class OfferCrudController extends AbstractCrudController { public static function getEntityFqcn(): string { return Offer::class; } public function configureFilters(Filters $filters): Filters { return $filters ->add(AssociatedEntityFilter::new('location', 'Location') ->setFormTypeOptions([ 'value_type_options.class' => Location::class, 'value_type_options.choice_label' => 'getNiceName', ]) ); } } ```