我正在使用Omines Symfony数据表包https://omines.github.io/datatables-bundle/#doctrine-orm来组织我的事件表。
我无法搜索我的“Début”和“Fin”列,它们是日期时间列类型。我猜是因为这些是日期时间对象,我猜它找不到匹配。
mytable
如果我键入“08/19/2020”,它不会为我找到任何结果。
这里:https://datatables.net/forums/discussion/44218/how-do-i-search-on-a-datetime-column它建议在服务器端格式化日期,所以我尝试了(当然我已经安装了能够使用date_format的doctrine扩展):
->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'),
);
}])
我有这个错误:
未捕获的PHP异常原则\ ORM \查询\ QueryException:“[语法错误]第0行第34列:错误:应为StateFieldPath表达式|弦|输入参数|函数返回字符串|聚合表达式,已获得“""“
我看不出问题出在哪里。
谢谢你的帮助。
1条答案
按热度按时间c3frrgcw1#
从您提出的问题中很难判断,但是在您的代码中有些东西看起来有问题。
首先,使用一个自定义查询,但不使用任何带有日期的
WHERE
子句。第二,列的格式没有命名。由于结果没有名称,因此无法访问。您可以使用关键字
AS
命名它:第三,使用连接时,不应使用
ORMAdapter
,而应使用FetchJoinORMAdapter
(这将帮助您解决使用连接时的分页问题)。在我看来,您不应该尝试在查询中格式化startDate,而应该查看文档并使用
Criteria
https://omines.github.io/datatables-bundle/#doctrine-orm