Php 在Zend框架2中合并

Php 在Zend框架2中合并,php,sql,zend-framework,zend-framework2,Php,Sql,Zend Framework,Zend Framework2,我有以下sql选择: SELECT c.id, c.code, c.closed, COALESCE( c2.name, c.name ) AS name FROM `centers` c LEFT JOIN `centers_i18n` c2 ON c2.center_id = c.id AND c2.lang = 'ES' 在my zend应用程序中,您可以选择以下选项: $select = $sql->select(); $select->from($t

我有以下sql选择:

SELECT c.id, c.code, c.closed, COALESCE( c2.name, c.name ) AS name
FROM  `centers` c
LEFT JOIN  `centers_i18n` c2 ON c2.center_id = c.id
AND c2.lang =  'ES'
在my zend应用程序中,您可以选择以下选项:

    $select = $sql->select();
    $select->from($this->table);
    $select->join($this->multiLangTable, $this->table . '.id=' .$this->multiLangTable . '.' . $this->foreignKey, $mapping);
    $select->where($conditions);

这是相同的,但我不知道如何从列名称进行合并。

您必须指定要选择的列并添加一个作为表达式

$select->columns(
  array(
    ... 
    'name' => new \Zend\Db\Sql\Expression('COALESCE( c2.name, c.name )')
    ...
  )
);
整个代码应该接近这一点(我已经有一段时间没有使用Zend了,所以这里可能有错误):

 $select = $sql->select();
  $select->columns([
     'id' => 'id',
     'code' => 'code',
     'closed' => 'closed',
     'name' => new \Zend\Db\Sql\Expression('COALESCE( c2.name, c.name )')
  ]);
  $select->from(['c' => $this->table]);
  $select->join(['c2' => $this->multiLangTable], 'c.id = c2.' . $this->foreignKey, $mapping);
   $select->where($conditions);