Я пытаюсь сделать массовую копию некоторых записей из таблицы в ту же таблицу с одним измененным полем. Но я не могу найти правильный метод в ZF2 для этого.
Моя существующая таблица выглядит так:
CoID — CatCode — CategoryName
ПП — авто — Авто
PP — Mt — Метро
ПП — Такси — Такси
Я хочу запустить этот SQL-запрос:
вставить в expcatmaster
выберите ‘RY’, CatCode, CategoryName из 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();
}
Как заменить фактическое значение CoID из таблицы выбора на $ ToCoID, который я передал функции? Попробовал Google и искал в этом форуме, но не могу решить это.
В ZF (Zend \ Db) нет способа массовой вставки,
поэтому вы должны написать метод для этого.
Zend \ Db \ Sql \ Sql несколько пакетных вставок
Массовая вставка поддерживается в 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();
Других решений пока нет …