ZF2 Bulk insert using INSERT INTO .... SELECT 从 table 到相同的 table
ZF2 Bulk insert using INSERT INTO .... SELECT from a table to same table
我正在尝试将一些记录从 table 批量复制到同一个 table 中,但更改了一个字段。但是我无法在 ZF2 中找到正确的方法。
我现有的 table 看起来像这样:
CoID -- CatCode -- 类别名称
PP -- 自动 -- 自动
PP -- 山 -- Metro
PP -- 出租车 -- 出租车
我要运行这个SQL查询:
插入 expcatmaster
select 'RY'、CatCode、来自 expcatmaster 的类别名称,其中 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 table 中 CoID 的实际值?已尝试 google 并在该论坛中进行了搜索,但似乎无法解决。
ZF (Zend\Db) 中没有批量插入的方法,
所以你必须为此编写一个方法。
Zend\Db\Sql\Sql multiple batch inserts
MySQL 支持批量插入,但并非所有数据库都支持...
查看关于 link 的讨论。
对于这种情况,您可以执行原始 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();
我正在尝试将一些记录从 table 批量复制到同一个 table 中,但更改了一个字段。但是我无法在 ZF2 中找到正确的方法。
我现有的 table 看起来像这样: CoID -- CatCode -- 类别名称
PP -- 自动 -- 自动
PP -- 山 -- Metro
PP -- 出租车 -- 出租车
我要运行这个SQL查询:
插入 expcatmaster select 'RY'、CatCode、来自 expcatmaster 的类别名称,其中 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 table 中 CoID 的实际值?已尝试 google 并在该论坛中进行了搜索,但似乎无法解决。
ZF (Zend\Db) 中没有批量插入的方法, 所以你必须为此编写一个方法。
Zend\Db\Sql\Sql multiple batch inserts
MySQL 支持批量插入,但并非所有数据库都支持... 查看关于 link 的讨论。
对于这种情况,您可以执行原始 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();