Searching between certain period of time on SonataAdmin
-
20-12-2019 - |
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??
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