Symfony2和Sonata Admin Bundle - 过滤时间戳显示为日期

时间:2013-10-25 14:44:40

标签: symfony doctrine-orm sonata-admin

所以我有一个用Symfony2 + Sonata Admin Bundle + Doctrine 2制作的简单数据库的GUI。该数据库将保存数十亿行,因此日期存储为时间戳(以节省空间),但在GUI中显示为日期(例如:2013/10/17 10:05:06)。除了按日期过滤外,一切都在GUI中工作。我在类中扩展了Admin,方法configureDatagridFilters()尝试了各种配置。我不能让它起作用......你能帮助我吗?

1 个答案:

答案 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',
    )))

如您所见,通过这种方式,我们可以按照自己的意愿操纵字段值。我希望它也能帮助别人:)

相关问题