2

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

4

1 回答 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 回答