平台相关功能

时间:2018-07-20 12:45:12

标签: php doctrine

我需要在DQL中使用GROUP_CONCAT函数。

解决方案是添加自定义功能:12

但是我还需要在PostgreSQL数据库上运行我的代码,因此我也需要实现STRING_AGG函数。

我的问题是:

如何实现DQL函数(如JOIN_STR(expr ',')),使其在GROUP_CONCATMySQL并在STRING_AGGPostgreSQL中呈现?

换句话说:从Platform内部确定当前FunctionNode的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

嗯,我是通过SqlWalker::getConnection找到的:

  public function getSql(SqlWalker $sqlWalker)
  {
    $platform = $sqlWalker->getConnection()->getDatabasePlatform();
    switch ($platform->getName()) {
       case 'mysql': //...
    }
    // ... 
  }