我正在尝试将zf2中的列添加到select语句中。类似于下面的链接(但下面似乎只适用于ZF1)。有没有办法在zf2中这样做?
Zend DB Selecting constants - columns that do not exist in table
以下是我的尝试:
bjobs
SQL Query如下所示:
$select->columns("foo" => new \Zend\Db\Sql\Expression('"foo" as type'))
其中foo是所有结果的列的值和名称。试着上面我得select *, 'foo' from bar
非常感谢, 中号
答案 0 :(得分:3)
我假设type
是别名:
试试这个:
$select->columns(array("type" => new \Zend\Db\Sql\Expression("'foo'")));
答案 1 :(得分:3)
问题是方法$select->columns()
会覆盖现有列。
要解决此问题,您可以扩展自己的“select”并添加一个新方法来“添加”列(因为Select类的columns属性受到保护)。
实施例
<强> CustomSelect.php 强>
class CustomSelect extends \Zend\Db\Sql\Select
{
/**
* @param array $columns
* @param bool $prefixColumnsWithTable
* @return $this
*/
public function addColumns(array $columns, $prefixColumnsWithTable = true) {
$this->columns = $this->columns + $columns;
$this->prefixColumnsWithTable = (bool) $prefixColumnsWithTable;
return $this;
}
}
<强>用法:强>
$select = new CustomSelect();
$select->addColumns(['type' => new \Zend\Db\Sql\Expression("'foo'")]);
$select->addColumns(['*']); //This is the default value though - so adding after adding shouldn't be nessecary (except if you've used "columns()" before)