Created
March 20, 2012 14:04
-
-
Save dominikzogg/2135954 to your computer and use it in GitHub Desktop.
sonata admin daterange
This file contains hidden or 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' | |
) | |
) |
I don't see a typo, i replace the ':orderdateto' in the first with the ':orderdateto' in the second.
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
theres a typo:
$queryBuilder->setParameter(":orderdateto", $datetime);
has to be
$queryBuilder->setParameter("orderdateto", $datetime);
same above, thank you for sharing though!