You are here

public function Quantity::query in farmOS 2.x

Return value

\Drupal\Core\Database\Query\SelectInterface

Overrides SqlBase::query

File

modules/core/migrate/src/Plugin/migrate/source/d7/Quantity.php, line 20

Class

Quantity
Log quantity source from database.

Namespace

Drupal\farm_migrate\Plugin\migrate\source\d7

Code

public function query() {
  $query = $this
    ->select('field_collection_item', 'fci');
  $query
    ->addField('fci', 'item_id', 'id');

  // Join in the measure value.
  $query
    ->leftJoin('field_data_field_farm_quantity_measure', 'fdffqm', "fci.item_id = fdffqm.entity_id AND fdffqm.entity_type = 'field_collection_item' AND fdffqm.bundle = 'field_farm_quantity' AND fdffqm.deleted = '0'");
  $query
    ->addField('fdffqm', 'field_farm_quantity_measure_value', 'measure');

  // Join in the numerator and denominator values.
  $query
    ->leftJoin('field_data_field_farm_quantity_value', 'fdffqv', "fci.item_id = fdffqv.entity_id AND fdffqv.entity_type = 'field_collection_item' AND fdffqv.bundle = 'field_farm_quantity' AND fdffqv.deleted = '0'");
  $query
    ->addField('fdffqv', 'field_farm_quantity_value_numerator', 'value_numerator');
  $query
    ->addField('fdffqv', 'field_farm_quantity_value_denominator', 'value_denominator');

  // Join in the units value.
  $query
    ->leftJoin('field_data_field_farm_quantity_units', 'fdffqu', "fci.item_id = fdffqu.entity_id AND fdffqu.entity_type = 'field_collection_item' AND fdffqu.bundle = 'field_farm_quantity' AND fdffqu.deleted = '0'");
  $query
    ->addField('fdffqu', 'field_farm_quantity_units_tid', 'units');

  // Join in the label value.
  $query
    ->leftJoin('field_data_field_farm_quantity_label', 'fdffql', "fci.item_id = fdffql.entity_id AND fdffql.entity_type = 'field_collection_item' AND fdffql.bundle = 'field_farm_quantity' AND fdffql.deleted = '0'");
  $query
    ->addField('fdffql', 'field_farm_quantity_label_value', 'label');

  // Join in the log table to get the uid.
  $query
    ->leftJoin('field_data_field_farm_quantity', 'fdffq', 'fci.item_id = fdffq.field_farm_quantity_value');
  $query
    ->leftJoin('log', 'l', "fdffq.entity_type = 'log' AND fdffq.entity_id = l.id");
  $query
    ->addField('l', 'uid');

  // Ensure we don't include archived/deleted fields.
  $query
    ->condition('fci.archived', '0');
  $query
    ->condition('fdffq.deleted', '0');

  // Distinct items only.
  $query
    ->distinct();

  // Order by item_id.
  $query
    ->orderBy('fci.item_id');
  return $query;
}