I have the nodes that have the source image field field_old_image_field
and the destination image field, field_new_image_field
. field_old_image_field
has only one image. field_new_image_field
can have multiple images and probably does. I need to copy the image from field_old_image_field
to field_new_image_field
without disturbing the images that are already in field_new_image_field
.
Here's my code so far:
foreach ($nodes as $node) {
if ($node->hasField('field_old_image_field') && !empty($node->field_old_image_field->target_id)) {
$image = $node->get('field_old_image_field');
$image_uri = $image->entity->getFileUri();
$image_alt = $image[0]->get('alt')->getString();
$image_title = $image[0]->get('title')->getString();
$node->get('field_new_image_field')->appendItem([
'target_id' => $image,
'alt' => $image_alt,
'title' => $image_title,
]);
}
$node->save();
}
But when I run this code in an update hook, I get
In EntityReference.php line 106:
Value is not a valid entity.
I was getting it to work earlier, but I wasn't getting the alt
text or the title
text copied over. What's wrong with this code and is there an easier way to do this?