我有奏鸣曲日期范围过滤器
protected function configureDatagridFilters(DatagridMapper $filter)
{
$now = new \DateTime();
$filter
->add('created_at', 'doctrine_orm_date_range', array(
'label' => 'created_at_long',
'input_type' => 'text',
'field_options' => array(
'widget' => 'single_text'
)
)
);
}
如果我输入相同的日期,我的列表中不会返回具有此日期的元素。 有没有办法告诉奏鸣曲不要使用严格的比较法并使用“小于或等于”和“大于或等于”的算子?
答案 0 :(得分:3)
我认为添加格式标记会放松约束。无论如何都适用于(包括)我:
'format' => 'dd/MM/yyyy'
从目前的实时/工作过滤器:
->add('someField', 'doctrine_orm_date_range', [], null, ['format' => 'dd/MM/yyyy', 'widget' => 'single_text'])
答案 1 :(得分:1)
我认为你应该创建自己的过滤器来扩展这个过滤器。
另一种方法是使用doctrine_orm_datetime
<强>为什么强>
当您查看父抽象类Sonata\DoctrineORMAdminBundle\Filter\AbstractDateFilter
时,您可以使用filter
方法阅读:
$data['value']['start'] = $data['value']['start'] instanceof \DateTime ? $data['value']['start']->getTimestamp() : 0;
$data['value']['end'] = $data['value']['end'] instanceof \DateTime ? $data['value']['end']->getTimestamp() : 0;
就像你在day/month/year:00:00
和day/month/year:00:00
之间寻找的东西一样。
不在day/month/year:00:00
和day/month/year:23:59
答案 2 :(得分:-1)
检查实体中的created_at属性并查看其名称,如果已创建,则创建其中的created_at和create_at是其名称,因此您必须将其更改为:
->add('createdAt', 'doctrine_orm_date_range', array(
'label' => 'created_at_long',
'input_type' => 'text',
'field_options' => array(
'widget' => 'single_text'
)
)
);
因为奏鸣曲管理员可以通过其DB名称显示该属性,但它无法使用该过滤器:)希望它有所帮助