Skip to content

[Search] Searching on embeds causes InvalidArgumentException #7298

@KDederichs

Description

@KDederichs

Describe the bug
If you have an associated entity with an embed and you're trying to configure search for it you'll get an InvalidArgumentException.

To Reproduce

Have entity Foo contain a ManyToOne reference to Bar.
Bar has a property customerAddress that is an embed.

Try to configure Foos search like this:

    public function configureCrud(Crud $crud): Crud
    {
        return $crud
            ->setSearchFields(['bar.customerAddress.firstName']);
    }

(OPTIONAL) Additional context

Looks like we need some logic there to check if the thing you're trying to search is an association or an embed.

InvalidArgumentException:
Association name expected, 'customerAddress' is not an association.

  at vendor/doctrine/orm/src/Mapping/ClassMetadata.php:2521
  at Doctrine\ORM\Mapping\ClassMetadata->getAssociationTargetClass('customerAddress')
     (vendor/easycorp/easyadmin-bundle/src/Orm/EntityRepository.php:290)
  at EasyCorp\Bundle\EasyAdminBundle\Orm\EntityRepository->getSearchablePropertiesConfig(object(QueryBuilder), object(SearchDto), object(EntityDto))
     (vendor/easycorp/easyadmin-bundle/src/Orm/EntityRepository.php:76)
  at EasyCorp\Bundle\EasyAdminBundle\Orm\EntityRepository->addSearchClause(object(QueryBuilder), object(SearchDto), object(EntityDto), 'Doctrine\\DBAL\\Platforms\\PostgreSQL120Platform')
     (vendor/easycorp/easyadmin-bundle/src/Orm/EntityRepository.php:60)
  at EasyCorp\Bundle\EasyAdminBundle\Orm\EntityRepository->createQueryBuilder(object(SearchDto), object(EntityDto), object(FieldCollection), object(FilterCollection))
     (vendor/easycorp/easyadmin-bundle/src/Controller/AbstractCrudController.php:495)
  at EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController->createIndexQueryBuilder(object(SearchDto), object(EntityDto), object(FieldCollection), object(FilterCollection))
     (vendor/easycorp/easyadmin-bundle/src/Controller/AbstractCrudController.php:137)
  at EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController->index(object(AdminContext))
     (vendor/symfony/http-kernel/HttpKernel.php:183)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:76)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:193)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:32)
  at require_once('/app/vendor/autoload_runtime.php')
     (public/index.php:5)                

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions