Миграция Пользовательский плагин Возвращаемое значение - PullRequest
0 голосов
/ 17 октября 2018

У меня есть миграция, и это очень просто.У меня есть CSV-файл с номером сотрудника и стажем работы.Я добавил два поля для пользователей в системе и заполнил их, когда пользователи были добавлены.Теперь у меня есть годовой файл для обновления лет службы.Я создал следующую миграцию для импорта / обновления старшинства:

id: seniority_import
label: Seniority CSV file import
description: Seniority CSV file import
migration_group: timeoff
migration_tags:
  - seniority_timeoff
langcode: en
status: true
dependencies:
  enforced:
    module:
    - timeoff_seniority
source:
  plugin: csv
  track_changes: true
  path: "/Users/rfulcher/Downloads/Seniority2017-2.csv"
  keys:
    - EMPNO
  column_names:
    0:
      EMPNO: "Employee Number"
    1:
      SENIORITY: "Employee Seniority"
process:
  uid:
    -
      plugin: user_lookup
      source: EMPNO
      value_key: field_employee_id
      entity_type: user
      bundle: 1
      bundle_key: status
      ignore_case: true
    -
      plugin: skip_on_empty
      method: row
      source: uid
      message: 'no empno found'
  field_employee_id: {}
  field_seniority: SENIORITY
destination:
  plugin: entity:user
  overwrite_properties:
    - field_seniority

Я также создаю плагин пользовательского процесса для поиска идентификатора пользователя, используя номер сотрудника

class UserLookup extends ProcessPluginBase {
  /**
   * {@inheritdoc}
   */
  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {

    $user_uid = $this->getUserByEmpNo($value);

    if ($user_uid == FALSE){
      drush_print('usernotfound for ' . $value . ' returning 0');
      return 0;
    } else {
      drush_print('userfound:'.$user_uid.': for ' . $value);
      return $user_uid;
    }
  }

  protected function getUserByEmpNo($employeenumber) {

    $id = \Drupal::entityQuery('user')
                  ->condition('field_employee_id', $employeenumber)
                  ->execute();
    $users =  \Drupal\user\Entity\User::loadMultiple($id);

    if (!empty($users)) {
      foreach ($users as $user) {
        $update_id = $user->id();
        return $update_id;
      }
    } else {
      return FALSE;
    }
  }

  public function prepareRow($row) {

  }
}

Импортзапускается, и я нахожу uid и возвращаю значение, но оно похоже на то, что миграция игнорирует его и пропускает строку.

Я что-то упустил.Я работал над этим слишком долго, и это должно быть просто, но я не должен понимать, как это должно работать или что-то в этом роде.Я в полном недоумении.

Простой CSV-файл с двумя полями empno, выслуга лет.Ничего фантастического.Буду признателен за любую помощь в этом, большое спасибо.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...