Вы здесь

Миграция в multi-value поля с изменением значений

0

На сайте-источнике есть текстовое поле ($row->adv), где через запятую перечислены параметры (например: автобусы, трамваи, метро, подъезды).
При миграции стоит задача перевести параметры в отдельные термины (причем несколько параметров могут означать один и тот же термин).
Обращаюсь к

 public function prepareRow($row)

Еесть многомерный массив типа: Реклама - Тип рекламы - Параметры. Перебираю его foreach и сравниваю со значением $row->adv. Если совпадает, то ему присваивается соответствующий термин из Типа рекламы.
Если в исходном текстовом поле $row->adv был указан только один параметр ($row->adv == 'автобусы'), то нода получает термин ($row->adv == 'Реклама на транспорте').

Теперь к проблеме:
Если там несколько параметров:

$row->adv == 'автобусы, трамваи, подъезды';

По идее в результате надо получить два термина: Реклама на транспорте, Реклама в домах. То есть после сравнения надо передать в Migrate что-то вроде:

$row->adv == "Реклама на транспорте, Реклама в домах" ->separator(', ');

Но как провести это сравнение и что вернуть в $row?

Версия Drupal: 
7.x
Связанные проекты: 
Migrate
Вопрос задан 08.02.2016 - 15:49

Раскладываю строку в массив по наличию ','

$arr = explode(', ', $row->adv);

Но остается вопрос, как сравнить и заменить каждый элемент $arr на нужный термин

Комментарий оставлен 08.02.2016 - 16:00

Я разобрался. В принципе вопрос касался исключительно методики сравнения простого и многомерного ассоциативного массива.

Комментарий оставлен 08.02.2016 - 20:11

Ответы