Вы здесь

Как в Migrate подсунуть пустому полю значение из другого поля?

0

Делаю миграцию через Migrate.
Одно из полей в источнике иногда оказывается пустым. В этом случае мне необходимо заполнять его значением другого поля.
В мануалах описывается случай, когда можно по умолчанию присваивать конкретное значение:

$this->addFieldMapping('title', 'document_title')->defaultValue ('0');
$this->addFieldMapping('path', 'document_alias');

По смыслу мне подходит следующий вариант:

$this->addFieldMapping('title', 'document_title')->defaultValue ('$this->addFieldMapping('path', 'document_alias')');
$this->addFieldMapping('path', 'document_alias');

Но он не срабатывает.

Вопрос собственно такой: можно ли сделать значение по умолчанию динамическим?
И как реализовать эту связь со значением другого поля?

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

Ответы

0

Пользуйтесь методом Migration::prepareRow():

public function prepareRow($row) {
  if (parent::prepareRow($row) === FALSE) {
    return FALSE;
  }

  if (!$row->document_title) {
    $row->document_title = $row->document_alias;
  }
}
Ответ дан 04.02.2016 - 15:06
Аватар пользователя xandeadx
xandeadx
1542

Спасибо.
Вот тут запнулся как раз:

$row->document_title = $row->document_alias;

долго не улавливал формат присвоения.

Комментарий оставлен 04.02.2016 - 15:50