Массовое изменение записей
-
- Сообщения: 15
- Зарегистрирован: 2014.05.14, 10:18
Массовое изменение записей
Добрый день, подскажите, есть и решение наподобие createMultipleInsertCommand, только не для создания, а для обновления (update) записей?
Re: Массовое изменение записей
нет такого, если mysql то формируйте и выполняйте http://dev.mysql.com/doc/refman/5.6/en/ ... icate.html
-
- Сообщения: 15
- Зарегистрирован: 2014.05.14, 10:18
Re: Массовое изменение записей
Попробовал
Проблема в том, что параметры хранятся в каком-то защищенном свойстве объекта и при перезадании текста запроса все трется:(
Код: Выделить всё
public function actionTest(){
$arrayForMass = array();
$arrayForMass[] = array(
'id' => 1001,
'name' => 'waaaaagh',
'type' => 'service'
);
$arrayForMass[] = array(
'id' => 1002,
'name' => 'raaaaagh',
'type' => 'service'
);
$arrayForMass[] = array(
'id' => 1003,
'name' => 'teeeeest',
'type' => 'service'
);
$builder=Yii::app()->db->schema->commandBuilder;
$command=$builder->createMultipleInsertCommand('sample', $arrayForMass);
print_r($command);
echo '<br><br>';
$megaQuery = $command->getText(). ' ON DUPLICATE KEY UPDATE name=VALUES(name), type=VALUES(type)';
$command->setText($megaQuery);
print_r($command);
$command->execute();
}
-
- Сообщения: 15
- Зарегистрирован: 2014.05.14, 10:18
Re: Массовое изменение записей
Я полагаю, что это можно как-то сделать через
protected CDbCommand composeMultipleInsertCommand(mixed $table, array $data, array $templates=array ( ))
Указанные тут $templates
Но как они работают что-то нигде найти не могу
protected CDbCommand composeMultipleInsertCommand(mixed $table, array $data, array $templates=array ( ))
Указанные тут $templates
Но как они работают что-то нигде найти не могу
-
- Сообщения: 362
- Зарегистрирован: 2012.03.06, 11:33
- Откуда: Украина/Житомир
- Контактная информация:
Re: Массовое изменение записей
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
yii@conference.jabber.ru
-
- Сообщения: 15
- Зарегистрирован: 2014.05.14, 10:18
Re: Массовое изменение записей
alexZT - специально стараюсь по минимуму лезть в "чистый" sql - именно потому что плохо его знаю и поэтому плохо знаю требования его безопасности
поэтому и хочется максимально силами yii сделать
поэтому и хочется максимально силами yii сделать
- sluchainiyznak
- Сообщения: 617
- Зарегистрирован: 2013.05.19, 17:51
- Откуда: ХМАО-Югра, г. Сургут
- Контактная информация:
Re: Массовое изменение записей
Если с использованием ActiveRecord, то вот - http://www.yiiframework.com/doc/api/1.1 ... All-detail
-
- Сообщения: 362
- Зарегистрирован: 2012.03.06, 11:33
- Откуда: Украина/Житомир
- Контактная информация:
Re: Массовое изменение записей
ну, рано или поздно придется, ибо иногда силами оберток не все удается сделать, или уходит куда больше времени, чтобы разобраться как это сделать + ORM на фронте - это не всегда допустимоpaulchertov писал(а):alexZT - специально стараюсь по минимуму лезть в "чистый" sql - именно потому что плохо его знаю и поэтому плохо знаю требования его безопасности
поэтому и хочется максимально силами yii сделать
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
yii@conference.jabber.ru
-
- Сообщения: 15
- Зарегистрирован: 2014.05.14, 10:18
Re: Массовое изменение записей
По счастью нет:) - это наверное единственное что я делаю с БД - дальше порядок задач такой, что БД становится злом как класс.ну, рано или поздно придется, ибо иногда силами оберток не все удается сделать, или уходит куда больше времени, чтобы разобраться как это сделать + ORM на фронте - это не всегда допустимо
-
- Сообщения: 15
- Зарегистрирован: 2014.05.14, 10:18
Re: Массовое изменение записей
Спасибо, но, боюсь не поможет:sluchainiyznak писал(а):Если с использованием ActiveRecord, то вот - http://www.yiiframework.com/doc/api/1.1 ... All-detail
Эту штуку я видел, но или я тупой, или оно не решает именно мою задачу:
Есть некоторое количество записей (порядок - тысячи)
У всех значения разные:
1,1369, 'wdjldw', 6789
2,1909, 'wddsvjlv', 6719
...
9867, 72197, 'uiyuiyiu', 68901
и всю эту икебану надо засунуть одним запросом в базу
AR скорее всего отпадает потому что космически тяжелый.
Хочется как-то билдером йиишным собрать запрос и исполнить его.
Re: Массовое изменение записей
если порядок тысячи то лучше сделать самому, тот же метод множественной вставки конечно крут, но ввиду того что использует подстановку параметров получается довольно тяжел при вставке тысяч записей, вы же сами знаете какие значения надо обкавычить, а какие достаточно например к целому привести для безопасности, поэтому параметры необязательно использовать