ZF2 Массовая вставка с использованием INSERT INTO …. SELECT из таблицы в ту же таблицу

Я пытаюсь сделать массовую копию некоторых записей из таблицы в ту же таблицу с одним измененным полем. Но я не могу найти правильный метод в 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 и искал в этом форуме, но не могу решить это.

2

Решение

В 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();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]