Перенос текстового поля с несколькими значениями


У меня есть простое текстовое поле, которое допускает 2 значения, назовем его field_text. В моей исходной базе данных есть два столбца, скажемtext1 и text2.

Я хочу настроить сопоставление полей для переноса так, чтобы text1 использовалось в качестве первого значения для field_text и text2 в качестве второго значения для field_text.

Другими словами, что-то вроде этого:

$this->addFieldMapping('field_text[0]', 'text1');
$this->addFieldMapping('field_text[1]', 'text2');
Author: Kenny Wyland, 2012-12-04

1 answers

Вы должны реализовать метод prepareRow() в своем классе миграции. Внутри prepareRow() вы можете прочитать оба поля источника и добавить их в массив. Я приведу пример:

public function prepareRow($row) {
  $row->text1 = array($row->text1, $row->text2);
}

Теперь ваше исходное поле "text1" будет содержать оба значения, и его можно сопоставить с "field_text". "text2" должен быть установлен в DNM (не сопоставлять).

 10
Author: ermannob, 2012-12-05 14:03:57