Вы здесь

Как мигрировать картинки из MySQL?

0

Хочу переехать с Fusion PHP на Drupal 8.
Всё переносится кроме картинок! Думаю для этого нужно написать еще плагин на PHP. Чтобы он обрабатывал процесс переноса картинок с указанной папки в базу друпала и привязывал картинку к нужной статье. Но у меня не хватает ума! Как это сделать? Хелп!

источник - таблица Mysql с полями:
'news_id', 'news_subject', 'news_news', 'news_extended', 'news_datestamp', 'news_image'
Надо эти данные перетащить в статьи друпала.
Текст файла **config\install\migrate_plus.migration.import_from_fusion_news.yml **

id: news
label: news
migration_group: Fusion_migrate
source:
  plugin: fusion_news
  key: db_fusion2
destination:
  plugin: entity:node
process:
  type:
    plugin: default_value
    default_value: article
  title: news_subject
  'body/summary': news_news
  'body/format':
    plugin: default_value
    default_value: full_html
  'body/value': news_extended
  changed: news_datestamp
  created: news_datestamp
  field_image: news_image

Текст файла **src\plugin\migrate\source\fusion_news.php **

<?php
namespace Drupal\import_from_fusion\Plugin\migrate\source;

use Drupal\migrate\Plugin\migrate\source\SqlBase;
use Drupal\migrate\Row;

/**
 * Source plugin for the news.
 *
 * @MigrateSource(
 *   id = "fusion_news"
 * )
 */
class fusion_news extends SqlBase {

  /**
   * {@inheritdoc}
   */
  public function query() {
    $query = $this->select('fusion_news', 'd')
      ->fields('d', ['news_id', 'news_subject', 'news_news','news_extended','news_datestamp','news_image' ])
      ->range(500,2);

    return $query;
  }

  /**
   * {@inheritdoc}
   */
  public function fields() {
    $fields = [
      'news_id' => $this->t('news_id'),
      'news_subject' => $this->t('news_subject'),
      'news_news' => $this->t('news_news'),
      'news_extended' => $this->t('news_extended'),
      'news_datestamp' => $this->t('news_datestamp'),
      'news_image' => $this->t('news_image'),
    ];

    return $fields;
  }

  /**
   * {@inheritdoc}
   */
  public function getIds() {
    return [
      'news_id' => [
        'type' => 'integer',
        'alias' => 'd',
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function prepareRow(Row $row) {
    return parent::prepareRow($row);
  }
}
?>

Две недели сижу. Депресняк начинается.

Версия Drupal: 
8.x
Вопрос задан 10.10.2017 - 13:43

Если вечером не забуду, вернусь с примером кода. А так - надо делать две миграции: для файлов и новостей. У миграции новостей указывается жёсткой зависимостью миграция файлов.

В миграции файлов надо подготовить (в простом случае) два параметра - откуда копировать и куда.

Комментарий оставлен 10.10.2017 - 14:48

Спасибо. Жду с нетерпением. Примеры есть разные, но с моими познаниями ни чего не выходит. Всё время что-то не слава богу. Вопросов только еще больше возникает.

Комментарий оставлен 5 дней назад

Ответы