我正在尝试将表中的某些记录批量复制到同一个表中,并更改了一个字段。但我无法在ZF2中找到正确的方法。
我现有的表格如下: CoID - CatCode - CategoryName
PP - 自动 - 自动
PP - Mt - MetroPP - 出租车 - 出租车
我想运行此SQL查询:
插入expcatmaster 从expcatmaster中选择' RY',CatCode,CategoryName,其中CoID =' PP'
我无法找到一种方法来放置常数' RY'进入代码(使用ZF2)。 我的CopyCategoryTable.php中的代码如下:
public function insCategory($FromCoID, $ToCoID) {
$SelCol = array(
'CoID',
'CatCode',
'CategoryName',
);
$adapter = $this->tableGateway->getAdapter();
$sql = new Sql($adapter);
$SelQry =$sql->select();
$SelQry->columns($SelCol);
$SelQry->from('ExpcatMaster');
$SelQry->where(array('CoID' => $FromCoID));
echo $SelQry->getSqlString();
$InsQry = $sql->insert();
$InsQry->into('ExpcatMaster');
$InsQry->select($SelQry);
$InsData = $sql->prepareStatementForSqlObject($InsQry);
echo $InsQry->getSqlString();
$this->tableGateway = $InsData->execute();
}
如何使用已传递给函数的$ ToCoID替换select表中的CoID的实际值?尝试谷歌并在这个论坛搜索,但似乎无法解决。
答案 0 :(得分:1)
在ZF(Zend \ Db)中没有批量插入的方法, 所以你必须为此编写一个方法。
Zend\Db\Sql\Sql multiple batch inserts
MySQL中支持批量插入,但并非所有数据库都支持... 检查链接上的讨论。
您可以针对这种情况执行原始SQL查询:
$parameters = ['name 1', 'desc 1', 'name 2', 'desc 2'];
$sql = 'INSERT INTO table (name, description) VALUES (?, ?), (?, ?);';
$resultSet = $this->adapter->query($sql, $parameters);
return $resultSet->getAffectedRows();