filedepot_folder). // 2. Täidab selle D7 filedepot_categories.pid järgi (child nid -> parent nid). // // NB! Eeldab, et D7 nid == D11 nid (migratsioon säilitas nid-d). use Drupal\field\Entity\FieldStorageConfig; use Drupal\field\Entity\FieldConfig; use Drupal\Core\Database\Database; use Drupal\node\Entity\Node; $src = Database::getConnection('default', 'migrate'); // 1. Väli. $storage = FieldStorageConfig::loadByName('node', 'field_folder_parent'); if (!$storage) { $storage = FieldStorageConfig::create([ 'field_name' => 'field_folder_parent', 'entity_type' => 'node', 'type' => 'entity_reference', 'settings' => ['target_type' => 'node'], 'module' => 'core', 'cardinality' => 1, 'translatable' => FALSE, ]); $storage->save(); echo "STORAGE_CREATED\n"; } else { echo "STORAGE_EXISTS\n"; } $field = FieldConfig::loadByName('node', 'filedepot_folder', 'field_folder_parent'); if (!$field) { $field = FieldConfig::create([ 'field_storage' => $storage, 'bundle' => 'filedepot_folder', 'label' => 'Ülemkaust', 'required' => FALSE, 'settings' => [ 'handler' => 'default:node', 'handler_settings' => [ 'target_bundles' => ['filedepot_folder' => 'filedepot_folder'], 'sort' => ['field' => 'title', 'direction' => 'ASC'], 'auto_create' => FALSE, ], ], ]); $field->save(); echo "FIELD_CREATED\n"; } else { echo "FIELD_EXISTS\n"; } // 2. Ehita pid -> nid kaart ja määra vanemad. $cid_nid = []; foreach ($src->query("SELECT cid, nid FROM {filedepot_categories}") as $r) { $cid_nid[(int) $r->cid] = (int) $r->nid; } $map = []; // child nid -> parent nid foreach ($src->query("SELECT cid, pid, nid FROM {filedepot_categories} WHERE pid <> 0") as $r) { $parent_nid = $cid_nid[(int) $r->pid] ?? NULL; if ($parent_nid) { $map[(int) $r->nid] = $parent_nid; } } $ok = 0; $fail = 0; foreach ($map as $child => $parent) { $node = Node::load($child); if (!$node) { echo "MISSING NODE $child\n"; $fail++; continue; } $node->set('field_folder_parent', ['target_id' => $parent]); $node->save(); $ok++; } echo "POPULATED: $ok, FAILED: $fail\n"; echo "done\n";