ZF2 - 使用CONCAT选择

时间:2012-11-19 13:30:26

标签: zend-framework2

我正在努力做出这样的选择:

  

SELECT c。*,CONCAT(c.provider_id,'#',c.name“)FROM contact AS c

所以,我写的是这样的......

$sql = new Sql($this->adapter);
        $query = $sql->select()
        ->from(array('c' => 'contact'))
        ->columns(array("CONCAT(c.provider_id,'#',c.name"), false)

但结果是:

  

SELECT c``CONCAT(c.provider_id,'#',c.name AS   CONCAT(c.provider_id,'#',c.name FROM contact AS c

我做错了什么? 谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

当我必须从表中提取一些列并添加Sql函数时,我通常使用此代码:

$sql = new Sql($this->adapter);
$query = $sql->select()
    ->from(array('c' => 'contact'))
    ->columns(array(
        'id', 'name', 'data' => new Expression('CONCAT(c.provider_id,'#',c.name)')
    )
);

ExpressionZend\Db\Sql\Expression的一个实例,结果是:

SELECT `id`, `name`,  CONCAT(c.provider_id,'#',c.name) AS `data` FROM `contact` AS `c`

答案 1 :(得分:2)

如果您需要使用MySQL函数或其他任何您不希望自动转义的内容,请查看数据库表达式。一些例子:

https://github.com/ralphschindler/Zend_Db-Examples

$sql = new Sql($this->adapter);
$query = $sql->select()
    ->from(array('c' => 'contact'))
    ->columns(array(
        '*', new Expression("CONCAT(c.provider_id,'#',c.name) as data")
    ))
;