Php 在Zend框架2中合并
我有以下sql选择: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
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);