所以我有一个用Symfony2 + Sonata Admin Bundle + Doctrine 2制作的简单数据库的GUI。该数据库将保存数十亿行,因此日期存储为时间戳(以节省空间),但在GUI中显示为日期(例如:2013/10/17 10:05:06)。除了按日期过滤外,一切都在GUI中工作。我在类中扩展了Admin,方法configureDatagridFilters()尝试了各种配置。我不能让它起作用......你能帮助我吗?
答案 0 :(得分:0)
我找到了一个解决方案,我认为它在许多其他情况下也很有用:
因此,在扩展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',
)))
如您所见,通过这种方式,我们可以按照自己的意愿操纵字段值。我希望它也能帮助别人:)