Add Mauricio's entity query helper and my use of it in text list to boolean
This commit is contained in:
parent
df01ba34c6
commit
126db73037
1 changed files with 49 additions and 0 deletions
49
migration_helpers.module
Normal file
49
migration_helpers.module
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entity query helper.
|
||||||
|
*/
|
||||||
|
function migration_helpers_entity_query($entity_type, $bundle, $field = '') {
|
||||||
|
|
||||||
|
/** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */
|
||||||
|
$entity_type_manager = \Drupal::service('entity_type.manager');
|
||||||
|
|
||||||
|
$entity_storage = $entity_type_manager->getStorage($entity_type);
|
||||||
|
$bundle_key = $entity_storage->getEntityType()->getKey('bundle');
|
||||||
|
|
||||||
|
$entity_query = $entity_storage->getQuery();
|
||||||
|
$entity_query->condition($bundle_key, $bundle);
|
||||||
|
|
||||||
|
if (!empty($field)) {
|
||||||
|
// Check that field BOTH is present on entity bundle AND has a value saved.
|
||||||
|
$entity_query->exists($field);
|
||||||
|
}
|
||||||
|
|
||||||
|
$entity_query->accessCheck(FALSE);
|
||||||
|
|
||||||
|
$entity_ids = $entity_query->execute();
|
||||||
|
|
||||||
|
return $entity_type_manager->getStorage($entity_type)->loadMultiple($entity_ids);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// The below almost serve more as examples that can be followed
|
||||||
|
|
||||||
|
function migration_helpers_text_list_to_boolean($old_field_name, $new_field_name, $bundle, $entity_type = 'node', $value_map = NULL) {
|
||||||
|
|
||||||
|
$value_map = $value_map ?? [
|
||||||
|
'Yes' => TRUE,
|
||||||
|
'No' => FALSE,
|
||||||
|
];
|
||||||
|
|
||||||
|
$nodes = migration_helpers_entity_query($entity_type, $bundle, $old_field_name);
|
||||||
|
foreach ($nodes as $node) {
|
||||||
|
/** @var \Drupal\node\NodeInterface $node */
|
||||||
|
$orig_value = trim($node->$old_field_name->value);
|
||||||
|
$new_value = $value_map[$orig_value] ?? (boolean) $orig_value;
|
||||||
|
$node->set($new_field_name, $new_value);
|
||||||
|
$node->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Reference in a new issue