所以我有一个使用 Symfony2 + Sonata Admin Bundle + Doctrine 2 制作的简单数据库的 GUI。该数据库将保存数十亿行,因此日期存储为时间戳(以节省空间)但在 GUI 中显示为日期(例如:2013 /10/17 10:05:06)。除了按日期过滤外,一切都在 GUI 中工作。我在扩展 Admin 的类中尝试了各种配置,方法 configureDatagridFilters()。我无法让它工作......你能帮帮我吗?
问问题
932 次
1 回答
1
我找到了一种解决方法,我认为它在许多其他情况下也很有用:
因此,在扩展 Admin.php 的类中,我们有方法 configureDatagridFilters()。可以添加一个输入,例如
->add('startDateFrom', 'doctrine_orm_callback', array(
'label' => 'Start Date from',
'callback' => function($queryBuilder, $alias, $field, $value) {
if (!$value['value']) {
return;
}
$inputValue = $this->dateStringToTimestamp($value['value']);
$queryBuilder->andWhere("{$alias}.startDate >= :startDateFrom");
$queryBuilder->setParameter('startDateFrom', $inputValue);
return true;
},
'field_type' => 'text'
), null, array('attr' => array('class' => 'calendar',
)))
如您所见,通过这种方式,我们可以随心所欲地操纵字段值。我希望它也能帮助其他人:)
于 2013-10-31T16:37:32.920 回答