You are here

migrate_example_advanced_setup.install in Migrate Plus 8.4

Install setup for the migration example module.

Set up source data and destination configuration for the migration example module. We do this in a separate module so migrate_example_advanced itself is a pure migration module.

File

migrate_example_advanced/migrate_example_advanced_setup/migrate_example_advanced_setup.install
View source
<?php

/**
 * @file
 * Install setup for the migration example module.
 *
 * Set up source data and destination configuration for the migration example
 * module. We do this in a separate module so migrate_example_advanced itself is
 * a pure migration module.
 */

/**
 * Implements hook_schema().
 */
function migrate_example_advanced_setup_schema() {
  $schema['migrate_example_advanced_account'] = migrate_example_advanced_schema_account();
  $schema['migrate_example_advanced_account_updates'] = migrate_example_advanced_schema_account_updates();
  $schema['migrate_example_advanced_categories'] = migrate_example_advanced_schema_categories();
  $schema['migrate_example_advanced_vintages'] = migrate_example_advanced_schema_vintages();
  $schema['migrate_example_advanced_variety_updates'] = migrate_example_advanced_schema_variety_updates();
  $schema['migrate_example_wine'] = migrate_example_advanced_schema_wine();
  $schema['migrate_example_advanced_updates'] = migrate_example_advanced_schema_updates();
  $schema['migrate_example_advanced_producer'] = migrate_example_advanced_schema_producer();
  $schema['migrate_example_advanced_category_wine'] = migrate_example_advanced_schema_category_wine();
  $schema['migrate_example_advanced_category_producer'] = migrate_example_advanced_schema_category_producer();
  $schema['migrate_example_advanced_comment'] = migrate_example_advanced_schema_comment();
  $schema['migrate_example_advanced_comment_updates'] = migrate_example_advanced_schema_comment_updates();
  $schema['migrate_example_advanced_files'] = migrate_example_advanced_schema_files();
  $schema['migrate_example_advanced_blobs'] = migrate_example_advanced_schema_blobs();
  $schema['migrate_example_advanced_table_source'] = migrate_example_advanced_schema_table_source();
  $schema['migrate_example_advanced_table_dest'] = migrate_example_advanced_schema_table_dest();
  return $schema;
}

/**
 * Implements hook_install().
 */
function migrate_example_advanced_setup_install() {

  // Populate our tables.
  migrate_example_advanced_data_account();
  migrate_example_advanced_data_account_updates();
  migrate_example_advanced_data_categories();
  migrate_example_advanced_data_vintages();
  migrate_example_advanced_data_variety_updates();
  migrate_example_advanced_data_wine();
  migrate_example_advanced_data_updates();
  migrate_example_advanced_data_producer();
  migrate_example_advanced_data_category_wine();
  migrate_example_advanced_data_category_producer();
  migrate_example_advanced_data_comment();
  migrate_example_advanced_data_comment_updates();
  migrate_example_advanced_data_files();
  migrate_example_advanced_data_blobs();
  migrate_example_advanced_data_table_source();
}

/**
 * The hook_schema definition for wine.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_wine() {
  return [
    'description' => 'Wines of the world',
    'fields' => [
      'wineid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Wine ID',
      ],
      'name' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
      ],
      'body' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Full description of the wine.',
      ],
      'excerpt' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Abstract for this wine.',
      ],
      'accountid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'ID of the author.',
      ],
      'posted' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Original creation date',
      ],
      'last_changed' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Last change date',
      ],
      'variety' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Wine variety',
      ],
      'region' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Wine region',
      ],
      'rating' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Rating (100-point scale)',
      ],
    ],
    'primary key' => [
      'wineid',
    ],
  ];
}

/**
 * The hook_schema definition for updates.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_updates() {
  return [
    'description' => 'Updated wine ratings',
    'fields' => [
      'wineid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Wine ID',
      ],
      'rating' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Rating (100-point scale)',
      ],
    ],
    'primary key' => [
      'wineid',
    ],
  ];
}

/**
 * The hook_schema definition for producer.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_producer() {
  return [
    'description' => 'Wine producers of the world',
    'fields' => [
      'producerid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Producer ID',
      ],
      'name' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
      ],
      'body' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Full description of the producer.',
      ],
      'excerpt' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Abstract for this producer.',
      ],
      'accountid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Account ID of the author.',
      ],
    ],
    'primary key' => [
      'producerid',
    ],
  ];
}

/**
 * The hook_schema definition for categories.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_categories() {
  return [
    'description' => 'Categories',
    'fields' => [
      'categoryid' => [
        'type' => 'int',
        'not null' => TRUE,
        'unsigned' => TRUE,
        'description' => 'Category ID',
      ],
      'type' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'Type of category: variety, region, best_with',
      ],
      'name' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
      ],
      'details' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
      ],
      'category_parent' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Parent category, if any',
      ],
      'ordering' => [
        'type' => 'int',
        'unsigned' => FALSE,
        'not null' => FALSE,
        'description' => 'Order in which to display categories',
      ],
    ],
    'primary key' => [
      'categoryid',
    ],
  ];
}

/**
 * The hook_schema definition for vintages.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_vintages() {
  return [
    'description' => 'Wine vintages',
    'fields' => [
      'wineid' => [
        'type' => 'int',
        'not null' => TRUE,
        'description' => 'Wine ID',
      ],
      'vintage' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Vintage (year)',
      ],
    ],
    'primary key' => [
      'wineid',
      'vintage',
    ],
  ];
}

/**
 * The hook_schema definition for variety updates.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_variety_updates() {
  return [
    'description' => 'Variety updates',
    'fields' => [
      'categoryid' => [
        'type' => 'int',
        'not null' => TRUE,
        'unsigned' => TRUE,
        'description' => 'Category ID',
      ],
      'details' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
      ],
    ],
    'primary key' => [
      'categoryid',
    ],
  ];
}

/**
 * The hook_schema definition for category wine.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_category_wine() {
  return [
    'description' => 'Wine category assignments',
    'fields' => [
      'wineid' => [
        'type' => 'int',
        'not null' => TRUE,
        'description' => 'Wine ID',
      ],
      'categoryid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Category ID',
      ],
    ],
    'primary key' => [
      'categoryid',
      'wineid',
    ],
  ];
}

/**
 * The hook_schema definition for category producer.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_category_producer() {
  return [
    'description' => 'Producer category assignments',
    'fields' => [
      'producerid' => [
        'type' => 'int',
        'not null' => TRUE,
        'description' => 'Producer ID',
      ],
      'categoryid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Category ID',
      ],
    ],
    'primary key' => [
      'categoryid',
      'producerid',
    ],
  ];
}

/**
 * The hook_schema definition for comment.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_comment() {
  return [
    'description' => 'Wine comments',
    'fields' => [
      'commentid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Comment ID',
      ],
      'wineid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Wine ID that is being commented upon',
      ],
      'comment_parent' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Parent comment ID in case of comment replies.',
      ],
      'subject' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Comment subject',
      ],
      'body' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Comment body',
      ],
      'name' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Comment name (if anon)',
      ],
      'mail' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Comment email (if anon)',
      ],
      'accountid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Account ID (if any).',
      ],
      'commenthost' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'IP/domain of host posted from',
      ],
      'userpage' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'User homepage',
      ],
      'posted' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Date comment posted',
      ],
      'lastchanged' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Date comment last changed',
      ],
    ],
    'primary key' => [
      'commentid',
    ],
  ];
}

/**
 * The hook_schema definition for comment updates.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_comment_updates() {
  return [
    'description' => 'Wine comment updates',
    'fields' => [
      'commentid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Comment ID',
      ],
      'subject' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Comment subject',
      ],
    ],
    'primary key' => [
      'commentid',
    ],
  ];
}

/**
 * The hook_schema definition for account.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_account() {
  return [
    'description' => 'Wine accounts.',
    'fields' => [
      'accountid' => [
        'type' => 'serial',
        'not null' => TRUE,
        'description' => 'Account ID',
      ],
      'status' => [
        'type' => 'int',
        'not null' => TRUE,
        'description' => 'Blocked_Allowed',
      ],
      'posted' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'Registration date',
      ],
      'last_access' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'Last access date',
      ],
      'last_login' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'Last login date',
      ],
      'name' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Account name (for login)',
      ],
      'sex' => [
        'type' => 'char',
        'length' => 1,
        'not null' => FALSE,
        'description' => 'Gender',
      ],
      'password' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Account password (raw)',
      ],
      'mail' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Account email',
      ],
      'original_mail' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Original account email',
      ],
      'sig' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'Signature for comments',
      ],
      'imageid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Image ID',
      ],
      'positions' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Positions held',
      ],
    ],
    'primary key' => [
      'accountid',
    ],
  ];
}

/**
 * The hook_schema definition for account updates.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_account_updates() {
  return [
    'description' => 'Wine account updates',
    'fields' => [
      'accountid' => [
        'type' => 'serial',
        'not null' => TRUE,
        'description' => 'Account ID',
      ],
      'sex' => [
        'type' => 'char',
        'length' => 1,
        'not null' => FALSE,
        'description' => 'Gender',
      ],
    ],
    'primary key' => [
      'accountid',
    ],
  ];
}

/**
 * The hook_schema definition for blobs.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_blobs() {
  return [
    'description' => 'Wine blobs to be migrated to file entities',
    'fields' => [
      'imageid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Image ID',
      ],
      'imageblob' => [
        'type' => 'blob',
        'size' => 'normal',
        'description' => 'binary image data',
      ],
    ],
    'primary key' => [
      'imageid',
    ],
  ];
}

/**
 * The hook_schema definition for files.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_files() {
  return [
    'description' => 'Wine and account files',
    'fields' => [
      'imageid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Image ID',
      ],
      'url' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'Image URL',
      ],
      'image_alt' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Image alt',
      ],
      'image_title' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => 'Image title',
      ],
      'wineid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'description' => 'Wine node this is associated with',
      ],
    ],
    'primary key' => [
      'imageid',
    ],
  ];
}

/**
 * The hook_schema definition for table source.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_table_source() {
  return [
    'description' => 'Source data to go into a custom Drupal table',
    'fields' => [
      'fooid' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Primary key',
      ],
      'field1' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'First field',
      ],
      'field2' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Second field',
      ],
    ],
    'primary key' => [
      'fooid',
    ],
  ];
}

/**
 * The hook_schema definition for table destination.
 *
 * @return array
 *   The schema definition.
 */
function migrate_example_advanced_schema_table_dest() {
  return [
    'description' => 'Custom Drupal table to receive source data directly',
    'fields' => [
      'recordid' => [
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Primary key',
      ],
      'drupal_text' => [
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => 'First field',
      ],
      'drupal_int' => [
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => 'Second field',
      ],
    ],
    'primary key' => [
      'recordid',
    ],
  ];
}

/**
 * Populate wine table.
 */
function migrate_example_advanced_data_wine() {
  $fields = [
    'wineid',
    'name',
    'body',
    'excerpt',
    'accountid',
    'posted',
    'last_changed',
    'variety',
    'region',
    'rating',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_wine')
    ->fields($fields);
  $data = [
    [
      1,
      'Montes Classic Cabernet Sauvignon',
      'Intense ruby-red color',
      'Great!',
      9,
      strtotime('2010-01-02 03:04:05'),
      strtotime('2010-03-04 05:06:07'),
      25,
      17,
      95,
    ],
    [
      2,
      'Archeo Ruggero di Tasso Nero d\'Avola',
      'Lots of berry character',
      'Pair with red sauced dishes',
      3,
      strtotime('2010-09-03 18:23:58'),
      strtotime('2010-09-03 18:23:58'),
      26,
      2,
      85,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate updates table.
 */
function migrate_example_advanced_data_updates() {
  $fields = [
    'wineid',
    'rating',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_updates')
    ->fields($fields);
  $data = [
    [
      1,
      93,
    ],
    [
      2,
      NULL,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate producer table.
 */
function migrate_example_advanced_data_producer() {
  $fields = [
    'producerid',
    'name',
    'body',
    'excerpt',
    'accountid',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_producer')
    ->fields($fields);
  $data = [
    [
      1,
      'Montes',
      'Fine Chilean winery',
      'Great!',
      9,
    ],
    [
      2,
      'Archeo',
      'Sicilia!',
      NULL,
      3,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate account table.
 */
function migrate_example_advanced_data_account() {
  $fields = [
    'accountid',
    'status',
    'posted',
    'last_access',
    'last_login',
    'name',
    'sex',
    'password',
    'mail',
    'original_mail',
    'sig',
    'imageid',
    'positions',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_account')
    ->fields($fields);
  $data = [
    [
      1,
      1,
      '2010-03-30 10:31:05',
      '2010-04-30 18:25:24',
      '2010-04-30 14:01:02',
      'darren',
      'M',
      'dpass',
      'ddarren@example.com',
      'darren@example.com',
      'All about the Australians',
      NULL,
      '5',
    ],
    [
      3,
      0,
      '2007-03-15 10:31:05',
      '2007-06-10 04:11:38',
      '2007-06-10 04:11:38',
      'emily',
      'F',
      'insecure',
      'emily@example.com',
      'emily@example.com',
      'Sommelier to the stars',
      NULL,
      '18',
    ],
    [
      9,
      1,
      '2004-02-29 10:31:05',
      '2004-02-29 10:31:05',
      '2004-02-29 10:31:05',
      'fonzie',
      NULL,
      'bike',
      'thefonz@example.com',
      'arthur@example.com',
      'Aaay!',
      1,
      '5,18',
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate account updates table.
 */
function migrate_example_advanced_data_account_updates() {
  $fields = [
    'accountid',
    'sex',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_account_updates')
    ->fields($fields);
  $data = [
    [
      1,
      NULL,
    ],
    [
      3,
      'M',
    ],
    [
      9,
      'F',
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate comment table.
 */
function migrate_example_advanced_data_comment() {
  $fields = [
    'commentid',
    'wineid',
    'comment_parent',
    'subject',
    'body',
    'name',
    'mail',
    'accountid',
    'commenthost',
    'userpage',
    'posted',
    'lastchanged',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_comment')
    ->fields($fields);
  $data = [
    [
      1,
      1,
      NULL,
      'im first',
      'Tasty',
      'grace',
      'grace@example.com',
      0,
      '123.456.78.9',
      'http:://grace.example.com/',
      strtotime('2010-01-02 03:04:05'),
      strtotime('2010-04-05 06:07:08'),
    ],
    [
      2,
      1,
      NULL,
      'im second',
      'Delicious',
      'horace',
      'horace@example.com',
      0,
      'example.com',
      NULL,
      strtotime('2010-02-02 03:04:05'),
      strtotime('2010-05-05 06:07:08'),
    ],
    [
      3,
      1,
      NULL,
      'im parent',
      'Don\'t care for it',
      'irene',
      'irene@example.com',
      0,
      '254.0.2.5',
      'http:://www.example.com/irene',
      strtotime('2010-03-02 03:04:05'),
      strtotime('2010-03-02 03:04:05'),
    ],
    [
      4,
      1,
      3,
      'im child',
      'But it\'s so good!',
      'emily',
      NULL,
      3,
      '58.29.126.1',
      'http:://www.wine.com/',
      strtotime('2010-01-02 03:04:05'),
      strtotime('2010-01-02 03:04:05'),
    ],
    [
      5,
      1,
      4,
      'im grandchild',
      'Right on, Emily!',
      'thefonz@example.com',
      NULL,
      9,
      '123.456.78.9',
      NULL,
      strtotime('2010-06-02 03:04:05'),
      strtotime('2010-06-02 03:04:05'),
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate comment updates table.
 */
function migrate_example_advanced_data_comment_updates() {
  $fields = [
    'commentid',
    'subject',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_comment_updates')
    ->fields($fields);
  $data = [
    [
      1,
      'I am first',
    ],
    [
      2,
      'I am second',
    ],
    [
      3,
      'I am parent',
    ],
    [
      4,
      '',
    ],
    [
      5,
      'I am Spartacus',
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate categories table.
 */
function migrate_example_advanced_data_categories() {
  $fields = [
    'categoryid',
    'type',
    'name',
    'category_parent',
    'details',
    'ordering',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_categories')
    ->fields($fields);
  $data = [
    [
      1,
      'variety',
      'White wine',
      NULL,
      'White wines are generally simpler and sweeter than red',
      3,
    ],
    [
      3,
      'variety',
      'Red wine',
      NULL,
      'Red wines are generally more complex and "dry" than white',
      1,
    ],
    [
      8,
      'variety',
      'Riesling',
      1,
      'Associated with Germany',
      2,
    ],
    [
      9,
      'variety',
      'Chardonnay',
      1,
      'One of the most popular whites',
      1,
    ],
    [
      13,
      'variety',
      'Merlot',
      3,
      'Very drinkable',
      4,
    ],
    [
      14,
      'variety',
      'Syrah',
      3,
      'A.k.a. shiraz',
      -3,
    ],
    [
      25,
      'variety',
      'Cabernet Sauvignon',
      3,
      'A basic',
      -5,
    ],
    [
      26,
      'variety',
      "Nero d'Avola",
      3,
      'Sicilian specialty',
      2,
    ],
    [
      2,
      'region',
      'Italy',
      NULL,
      'Largest producer of wine',
      5,
    ],
    [
      11,
      'region',
      'Tuscany',
      2,
      NULL,
      2,
    ],
    [
      18,
      'region',
      'Chianti',
      11,
      NULL,
      -1,
    ],
    [
      19,
      'region',
      'Elba',
      11,
      NULL,
      5,
    ],
    [
      4,
      'region',
      'France',
      NULL,
      'C\'est bon',
      6,
    ],
    [
      5,
      'region',
      'Bordeaux',
      4,
      NULL,
      1,
    ],
    [
      6,
      'region',
      'Barsac',
      5,
      NULL,
      3,
    ],
    [
      7,
      'region',
      'Pomerol',
      5,
      NULL,
      2,
    ],
    [
      16,
      'region',
      'Chile',
      NULL,
      NULL,
      3,
    ],
    [
      17,
      'region',
      'Colchagua Valley',
      16,
      NULL,
      1,
    ],
    [
      20,
      'region',
      'California',
      NULL,
      NULL,
      5,
    ],
    [
      21,
      'region',
      'Redwood Valley',
      20,
      NULL,
      1,
    ],
    [
      10,
      'best_with',
      'Beef',
      NULL,
      NULL,
      5,
    ],
    [
      12,
      'best_with',
      'Pork',
      NULL,
      NULL,
      -3,
    ],
    [
      15,
      'best_with',
      'Chicken',
      NULL,
      NULL,
      -5,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate vintages table.
 */
function migrate_example_advanced_data_vintages() {
  $fields = [
    'wineid',
    'vintage',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_vintages')
    ->fields($fields);
  $data = [
    [
      1,
      2006,
    ],
    [
      1,
      2007,
    ],
    [
      2,
      2001,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate variety updates table.
 */
function migrate_example_advanced_data_variety_updates() {
  $fields = [
    'categoryid',
    'details',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_variety_updates')
    ->fields($fields);
  $data = [
    [
      1,
      'White wines are simpler and sweeter than red',
    ],
    [
      3,
      'Red wines are generally more complex and dry than white',
    ],
    [
      8,
      'Usually associated with Germany',
    ],
    [
      9,
      NULL,
    ],
    [
      13,
      'Common, very drinakable',
    ],
    [
      14,
      'AKA Shiraz',
    ],
    [
      25,
      'Basic',
    ],
    [
      26,
      'A specialty of Sicily',
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate category wine table.
 */
function migrate_example_advanced_data_category_wine() {
  $fields = [
    'wineid',
    'categoryid',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_category_wine')
    ->fields($fields);
  $data = [
    [
      1,
      12,
    ],
    [
      1,
      15,
    ],
    [
      2,
      10,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate category producer table.
 */
function migrate_example_advanced_data_category_producer() {
  $fields = [
    'producerid',
    'categoryid',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_category_producer')
    ->fields($fields);
  $data = [
    [
      1,
      17,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate files table.
 */
function migrate_example_advanced_data_files() {
  $fields = [
    'imageid',
    'url',
    'image_alt',
    'image_title',
    'wineid',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_files')
    ->fields($fields);
  $data = [
    [
      1,
      'http://placekitten.com/200/200',
      NULL,
      NULL,
      NULL,
    ],
    [
      2,
      'http://cyrve.com/files/penguin.jpeg',
      'Penguin alt',
      'Penguin title',
      1,
    ],
    [
      3,
      'http://cyrve.com/files/rioja.jpeg',
      'Rioja alt',
      'Rioja title',
      2,
    ],
    [
      4,
      'http://cyrve.com/files/boutisse_0.jpeg',
      'Boutisse alt',
      'Boutisse title',
      2,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate blobs table.
 */
function migrate_example_advanced_data_blobs() {
  $blob = file_get_contents('core/misc/druplicon.png');
  $fields = [
    'imageid',
    'imageblob',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_blobs')
    ->fields($fields);
  $data = [
    [
      1,
      $blob,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

/**
 * Populate table source table.
 */
function migrate_example_advanced_data_table_source() {
  $fields = [
    'fooid',
    'field1',
    'field2',
  ];
  $query = \Drupal::database()
    ->insert('migrate_example_advanced_table_source')
    ->fields($fields);
  $data = [
    [
      3,
      'Some sample data',
      58,
    ],
    [
      15,
      'Whatever',
      2,
    ],
    [
      646,
      'More sample data',
      34989,
    ],
  ];
  foreach ($data as $row) {
    $query
      ->values(array_combine($fields, $row));
  }
  $query
    ->execute();
}

Functions

Namesort descending Description
migrate_example_advanced_data_account Populate account table.
migrate_example_advanced_data_account_updates Populate account updates table.
migrate_example_advanced_data_blobs Populate blobs table.
migrate_example_advanced_data_categories Populate categories table.
migrate_example_advanced_data_category_producer Populate category producer table.
migrate_example_advanced_data_category_wine Populate category wine table.
migrate_example_advanced_data_comment Populate comment table.
migrate_example_advanced_data_comment_updates Populate comment updates table.
migrate_example_advanced_data_files Populate files table.
migrate_example_advanced_data_producer Populate producer table.
migrate_example_advanced_data_table_source Populate table source table.
migrate_example_advanced_data_updates Populate updates table.
migrate_example_advanced_data_variety_updates Populate variety updates table.
migrate_example_advanced_data_vintages Populate vintages table.
migrate_example_advanced_data_wine Populate wine table.
migrate_example_advanced_schema_account The hook_schema definition for account.
migrate_example_advanced_schema_account_updates The hook_schema definition for account updates.
migrate_example_advanced_schema_blobs The hook_schema definition for blobs.
migrate_example_advanced_schema_categories The hook_schema definition for categories.
migrate_example_advanced_schema_category_producer The hook_schema definition for category producer.
migrate_example_advanced_schema_category_wine The hook_schema definition for category wine.
migrate_example_advanced_schema_comment The hook_schema definition for comment.
migrate_example_advanced_schema_comment_updates The hook_schema definition for comment updates.
migrate_example_advanced_schema_files The hook_schema definition for files.
migrate_example_advanced_schema_producer The hook_schema definition for producer.
migrate_example_advanced_schema_table_dest The hook_schema definition for table destination.
migrate_example_advanced_schema_table_source The hook_schema definition for table source.
migrate_example_advanced_schema_updates The hook_schema definition for updates.
migrate_example_advanced_schema_variety_updates The hook_schema definition for variety updates.
migrate_example_advanced_schema_vintages The hook_schema definition for vintages.
migrate_example_advanced_schema_wine The hook_schema definition for wine.
migrate_example_advanced_setup_install Implements hook_install().
migrate_example_advanced_setup_schema Implements hook_schema().