Skip to content

Instantly share code, notes, and snippets.

@webdevilopers
Created September 17, 2014 13:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save webdevilopers/df07325d4efe57050730 to your computer and use it in GitHub Desktop.
Save webdevilopers/df07325d4efe57050730 to your computer and use it in GitHub Desktop.
Add fullText (WHERE LIKE OR) with SonataDoctrineORMAdminBundle search to datagridFilters in SonataAdminBundle
<?php
namespace Application\Sonata\UserBundle\Admin;
use Sonata\UserBundle\Admin\Model\UserAdmin as SonataUserAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
class UserAdmin extends SonataUserAdmin
{
protected function configureDatagridFilters(DatagridMapper $filterMapper)
{
$filterMapper
->add('full_text', 'doctrine_orm_callback', array(
'callback' => array($this, 'getFullTextFilter'),
'field_type' => 'text'
));
}
public function getFullTextFilter($queryBuilder, $alias, $field, $value)
{
if (!$value['value']) {
return;
}
$queryBuilder->andWhere($queryBuilder->expr()->orX(
$queryBuilder->expr()->like($alias.'.username', $queryBuilder->expr()->literal('%' . $value['value'] . '%')),
$queryBuilder->expr()->like($alias.'.firstName', $queryBuilder->expr()->literal('%' . $value['value'] . '%')),
$queryBuilder->expr()->like($alias.'.lastName', $queryBuilder->expr()->literal('%' . $value['value'] . '%')),
$queryBuilder->expr()->like($alias.'.email', $queryBuilder->expr()->literal('%' . $value['value'] . '%'))
));
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment