Created
March 20, 2012 14:04
-
-
Save dominikzogg/2135954 to your computer and use it in GitHub Desktop.
sonata admin daterange
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
->add('orderdatefrom', 'doctrine_orm_callback', | |
array | |
( | |
'callback' => function(\Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery $queryBuilder, $alias, $field, $options) | |
{ | |
if(!isset($options['value']) || !$options['value']) | |
{ | |
return; | |
} | |
$value = $options['value']; | |
// set defaults | |
if(empty($value['year'])) | |
{ | |
return; | |
} | |
if(empty($value['month'])) | |
{ | |
$value['month'] = 1; | |
} | |
if(empty($value['day'])) | |
{ | |
$value['day'] = 1; | |
} | |
// new datetime | |
$datetime = new \DateTime(); | |
// update date | |
$datetime->setDate($value['year'], $value['month'], $value['day']); | |
$queryBuilder->andWhere(sprintf('%s.orderdate', $alias) . ' >= :orderdatefrom'); | |
$queryBuilder->setParameter("orderdatefrom", $datetime->format('Y-m-d')); | |
}, | |
'field_type' => 'date', | |
'label' => 'statistic.orderdatefrom' | |
) | |
) | |
->add('orderdateto', 'doctrine_orm_callback', | |
array | |
( | |
'callback' => function(\Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery $queryBuilder, $alias, $field, $options) | |
{ | |
if(!isset($options['value']) || !$options['value']) | |
{ | |
return; | |
} | |
$value = $options['value']; | |
// set defaults | |
if(empty($value['year'])) | |
{ | |
return; | |
} | |
if(empty($value['month'])) | |
{ | |
$value['month'] = 1; | |
} | |
if(empty($value['day'])) | |
{ | |
$value['day'] = 1; | |
} | |
// new datetime | |
$datetime = new \DateTime(); | |
// update date | |
$datetime->setDate($value['year'], $value['month'], $value['day']); | |
$queryBuilder->andWhere(sprintf('%s.orderdate', $alias) . ' <= :orderdateto'); | |
$queryBuilder->setParameter("orderdateto", $datetime->format('Y-m-d')); | |
}, | |
'field_type' => 'date', | |
'label' => 'statistic.orderdateto' | |
) | |
) |
worenga
commented
Apr 2, 2012
via email
Yes, but the : is wrong in setParameter
Ok get it (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html#binding-parameters-to-your-query) seems they handle my mistake, cause my example works too.
Changed: $queryBuilder->setParameter("orderdatefrom", $datetime->format('Y-m-d')); cause if i use datetime itself, i didn't get the items of the date from
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment