我正在使用Omine Symfony DataTable包https://omines.github.io/datatables-bundle/#doctrine-orm来组织我的事件表。
我无法搜索属于Datetime列类型的"Début“和"Fin”列。我猜是因为这些是DateTime对象,所以我猜它找不到匹配项。
如果我输入"08/19/2020“,系统不会为我找到任何结果。
这里:https://datatables.net/forums/discussion/44218/how-do-i-search-on-a-datetime-column它建议在服务器端格式化日期,所以我尝试了一下(当然,j已经安装了date扩展以便能够使用date_format):
->createAdapter(ORMAdapter::class, [
'entity' => Event::class,
'query' => function (QueryBuilder $builder) use ($eventStatus) {
$builder
->select('e')
->addSelect('DATE_FORMAT(e.startDate, "%d/%m/%Y")')
->addSelect('ca')
->addSelect('ci')
->addSelect('u')
->from(Event::class, 'e')
->join('e.category', 'ca')
->join('e.city', 'ci')
->join('e.user', 'u')
->andWhere('e.status = :status')
->setParameter('status', $eventStatus)
->orderBy('e.id', 'DESC')
;
},
])
I also changed my dateStart column to TextColumn:
->add('startDate', TextColumn::class, ['label' => 'Début', 'field' => 'e.startDate', 'render' => function($value, $context) {
return sprintf(
'%s<br>
%s',
$value,
$context->getStartAt()->format('H\hi'),
);
}])我有这样的错误:
未捕获QueryException\ ORM \ Query \ QueryException:“语法错误行0,第34列:错误:预期的StateFieldPathExpression | string | InputParameter | FunctionsReturningStrings | AggregateExpression,got‘”“
我看不出问题出在哪里。
谢谢你的帮助。
发布于 2020-10-21 20:34:17
很难从你问的问题中辨别出来,但是在你的代码中有一些看起来有问题的东西。
首先,您使用了自定义查询,但是没有对日期使用任何WHERE子句。
其次,您对列的格式未命名。无法访问结果,因为它没有名称。可以使用关键字AS对其进行命名
->addSelect('DATE_FORMAT(e.startDate, "%d/%m/%Y") AS startDateFormatted')第三,使用joins,然后不应该使用ORMAdapter,而应该使用FetchJoinORMAdapter (这将帮助您在使用joins时解决分页问题)。
在我看来,您不应该尝试在查询中格式化startDate,而应该检查文档并使用Criteria
https://stackoverflow.com/questions/63586152
复制相似问题