2

我正在尝试进行这样的选择:

SELECT c.*, CONCAT(c.provider_id,'#',c.name") 从contactASc

所以,我正在写这样的东西......

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

但是,结果是:

c``CONCAT(c.provider_id,'#',c.name原样 中选择CONCAT(c.provider_id,'#',c.namecontactc

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

4

2 回答 2

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)')
    )
);

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

SELECT `id`, `name`,  CONCAT(c.provider_id,'#',c.name) AS `data` FROM `contact` AS `c`
于 2015-01-21T10:30:12.903 回答
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")
    ))
;
于 2013-01-28T09:23:06.443 回答