Pregunta

I am using SonataAdmin to manage the mysql Table.

I have table which has parameters

for example

name  |heppening

stage1|2014-02-03 12:51:00
stage2|2014-03-12 18:24:00
stage3|2014-03-29 13:12:00

I would like to pick up rows which are between certain time.

timeA < happening and happening < timeB

but if I write in myAdmin like this

class myAdmin extends Admin {

public function configureDatagridFilters(DatagridMapper $datagridMapper)
{

    $datagridMapper
      ->add('happening');
}

it only make the select box for pinpoint time.

How can I indicate two time and search between certain period of time??

¿Fue útil?

Solución

you can try with doctrine_orm_callback something like this

protected function configureDatagridFilters(DatagridMapper $filter)
{
    $filter->add('startDate', 'doctrine_orm_callback', [
            'callback' => function($queryBuilder, $alias, $field, $value) {
                if (!($value && isset($value['value']))) {
                    return;
                }

                $value = $value['value'];

                $queryBuilder
                    ->andWhere(sprintf('%s.startDate >= :start',$alias))
                    ->setParameter('start', $value)
                ;

                return true;
            },
            'attr' => array('class' => 'datepicker'),
        ], "date", array('widget'     => 'single_text', 'attr' => array('class' => 'datepicker')))

        ->add('endDate', 'doctrine_orm_callback', [
            'callback' => function($queryBuilder, $alias, $field, $value) {
                if (!($value && isset($value['value']))) {
                    return;
                }
                //Handle your endDate with adding some hours to manage startDate = endDate
                $value = $value['value']->modify("+24 hours");
                $queryBuilder
                    ->andWhere(sprintf('%s.endDate <= :end',$alias))
                    ->setParameter('end', $value)
                ;

                return true;
            },
        ], "date", array('widget'     => 'single_text', 'attr' => array('class' => 'datepicker')))
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top