G. *_*urs 3 php mysql doctrine symfony doctrine-orm
我需要你帮助我如何将以下 Mysql 转换为 Doctrine。
select * from calendar_data as c where LEAST(c.end, end) - GREATEST(c.start, start) > 0;
Run Code Online (Sandbox Code Playgroud)
我试过这个:
$qb = $em->createQueryBuilder();
$query = $qb->select('items')
->from('\Admin\Entity\CalendarData','items')
->where('LEAST(items.end, :end) - GREATEST(items.start, :start) > 0')
->setParameter('start',$start)
->setParameter('end', $end);
Run Code Online (Sandbox Code Playgroud)
(鉴于此,$start
并且$end
已经提供)
我有以下错误:
{
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Internal Server Error",
"status": 500,
"detail": "[Syntax Error] line 0, col 57: Error: Expected known function, got 'LEAST'"
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
这是我的问题生成的sql:
使用Beberlei 的 DoctrineExtensions来扩展 DQL 的更多 MySQL 函数,例如GREATEST
和LEAST
。
composer require beberlei/DoctrineExtensions
将你需要的功能添加到你的 config.yml
doctrine:
orm:
dql:
string_functions:
least: DoctrineExtensions\Query\Mysql\Least
greatest: DoctrineExtensions\Query\Mysql\Greatest
Run Code Online (Sandbox Code Playgroud)安装和链接后,您第一次尝试转换代码应该会按预期工作:
$qb = $em->createQueryBuilder();
$query = $qb->select('items')
->from('\Admin\Entity\CalendarData','items')
->where('LEAST(items.end, :end) - GREATEST(items.start, :start) > 0')
->setParameter('start',$start)
->setParameter('end', $end);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1488 次 |
最近记录: |