我正在努力做出这样的选择:
SELECT
c
。*,CONCAT(c.provider_id,'#',c.name“)FROMcontact
ASc
所以,我写的是这样的......
$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
ASCONCAT(c.provider_id,'#',c.name
FROMcontact
ASc
我做错了什么? 谢谢你的帮助!
答案 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)')
)
);
Expression
是Zend\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")
))
;