Заполнение modx_ms2_products при миграции

Здравствуйте, перехожу с Shopkeepera на MiniShop2
Дошел до пункта, где надо перетащить TV следующим запросом:
INSERT INTO modx_ms2_products
(id,price) 
select contentid,value from modx_site_tmplvar_contentvalues where 
tmplvarid=1
В принципе, подразумевается, что цена заполнена у всех товаров и для начала такой код подходит.
Выполняем запрос и получаем в modx_ms2_products строки для всех товаров с заполненными ценами. Но остается еще много полей, таких как Артикул, например.

Как должен быть составлен запрос, что бы по id он добавил соответствующий артикул (или оставил пустым, если его нет)?
MrKarandash
19 августа 2015, 19:51
modx.pro
1 493
0

Комментарии: 8

Василий Наумкин
20 августа 2015, 06:17
0
Придётся пробежаться еще по всем остальным ТВ параметрам и сделать обновить поля товара MS2.

Вот пример для article, для других полей нужно только менять поле в запросе $update и $id_tv.
$update = $modx->prepare("UPDATE {$modx->getTableName('msProductData')} SET article = ? WHERE id = ?");
$tv_id = 2;

$tvs = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tv_id));
$tvs->select('contentid,value');
if ($tvs->prepare() && $tvs->stmt->execute()) {
	while ($row = $tvs->stmt->fetch(PDO::FETCH_ASSOC)) {
		$update->execute(array($row['value'], $row['id']));
	}
}
Код не проверял, возможны опечатки.
    MrKarandash
    20 августа 2015, 13:35
    0
    Выполняю этот код в консоли, результата никакого
      Василий Наумкин
      20 августа 2015, 15:17
      +1
      Результата и не будет — это пример.

      Нужно подумать и адаптировать его под свои нужды. Или нанять программиста, который сделает это вместо тебя.
        MrKarandash
        20 августа 2015, 15:19
        0
        Так вы же пишете:
        Вот пример для article, для других полей нужно только менять поле в запросе $update и $id_tv.
        значит должно работать, если нет опечаток, для одного поля хотя бы? )))
          Василий Наумкин
          20 августа 2015, 15:26
          +2
          При условии, что я всё верно написал без проверки — конечно должно.

          А если не работает, значит я что-то написал неверно, и тебе предстоит выяснить, что именно.
            MrKarandash
            20 августа 2015, 20:32
            0
            установил 2.4.0, скачал и репо минишоп 2.1.12, требует обновить и выдает
              Василий Наумкин
              20 августа 2015, 21:27
              0
              Не требует, а предлагает.

              За версии старше 2.1 я не отвечаю — их разрабатывают другие ребята.
                MrKarandash
                20 августа 2015, 21:34
                0
                Ну там есть несколько необходимых функций ) А куда написать в таком случае?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    8