BeerTerm.php in Migrate Plus 8.2
File
migrate_example/src/Plugin/migrate/source/BeerTerm.phpView source
<?php
namespace Drupal\migrate_example\Plugin\migrate\source;
use Drupal\migrate\Plugin\migrate\source\SqlBase;
/**
* This is an example of a simple SQL-based source plugin. Source plugins are
* classes which deliver source data to the processing pipeline. For SQL
* sources, the SqlBase class provides most of the functionality needed - for
* a specific migration, you are required to implement the three simple public
* methods you see below.
*
* This annotation tells Drupal that the name of the MigrateSource plugin
* implemented by this class is "beer_term". This is the name that the migration
* configuration references with the source "plugin" key.
*
* @MigrateSource(
* id = "beer_term"
* )
*/
class BeerTerm extends SqlBase {
/**
* {@inheritdoc}
*/
public function query() {
/**
* The most important part of a SQL source plugin is the SQL query to
* retrieve the data to be imported. Note that the query is not executed
* here - the migration process will control execution of the query. Also
* note that it is constructed from a $this->select() call - this ensures
* that the query is executed against the database configured for this
* source plugin.
*/
return $this
->select('migrate_example_beer_topic', 'met')
->fields('met', [
'style',
'details',
'style_parent',
'region',
'hoppiness',
])
->orderBy('style_parent', 'ASC');
}
/**
* {@inheritdoc}
*/
public function fields() {
/**
* This method simply documents the available source fields provided by
* the source plugin, for use by front-end tools. It returns an array keyed
* by field/column name, with the value being a translated string explaining
* to humans what the field represents. You should always
*/
$fields = [
'style' => $this
->t('Account ID'),
'details' => $this
->t('Blocked/Allowed'),
'style_parent' => $this
->t('Registered date'),
// These values are not currently migrated - it's OK to skip fields you
// don't need.
'region' => $this
->t('Region the style is associated with'),
'hoppiness' => $this
->t('Hoppiness of the style'),
];
return $fields;
}
/**
* {@inheritdoc}
*/
public function getIds() {
/**
* This method indicates what field(s) from the source row uniquely identify
* that source row, and what their types are. This is critical information
* for managing the migration. The keys of the returned array are the field
* names from the query which comprise the unique identifier. The values are
* arrays indicating the type of the field, used for creating compatible
* columns in the map tables that track processed items.
*/
return [
'style' => [
'type' => 'string',
// 'alias' is the alias for the table containing 'style' in the query
// defined above. Optional in this case, but necessary if the same
// column may occur in multiple tables in a join.
'alias' => 'met',
],
];
}
}