У меня есть миграция, и это очень просто.У меня есть 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, выслуга лет.Ничего фантастического.Буду признателен за любую помощь в этом, большое спасибо.
Спасибо