You are here

public function Inventory::query in farmOS 2.x

Return value

\Drupal\Core\Database\Query\SelectInterface

Overrides SqlBase::query

File

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

Class

Inventory
Log inventory 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 numerator and denominator values.
  $query
    ->leftJoin('field_data_field_farm_inventory_value', 'fdffiv', "fci.item_id = fdffiv.entity_id AND fdffiv.entity_type = 'field_collection_item' AND fdffiv.bundle = 'field_farm_inventory' AND fdffiv.deleted = '0'");
  $query
    ->addField('fdffiv', 'field_farm_inventory_value_numerator', 'value_numerator');
  $query
    ->addField('fdffiv', 'field_farm_inventory_value_denominator', 'value_denominator');
  $query
    ->addExpression('SIGN(fdffiv.field_farm_inventory_value_numerator)', 'inventory_value_sign');

  // Join in the inventory asset reference.
  $query
    ->leftJoin('field_data_field_farm_inventory_asset', 'fdffia', "fci.item_id = fdffia.entity_id AND fdffia.entity_type = 'field_collection_item' AND fdffia.bundle = 'field_farm_inventory' AND fdffia.deleted = '0'");
  $query
    ->addField('fdffia', 'field_farm_inventory_asset_target_id', 'inventory_asset');

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

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

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

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