You are here

protected function ProductCategoryTrait::getReferencedIds in Commerce Core 8.2

Gets all referenced entity IDs for the given product.

This includes both taxonomy term IDs, and IDs belonging to other configurable entity reference fields. There is no filtering by target type to avoid needlessly loading all field definitions.

Parameters

\Drupal\commerce_product\Entity\ProductInterface $product: The product.

Return value

string[] The referenced entity IDs.

2 calls to ProductCategoryTrait::getReferencedIds()
OrderItemProductCategory::evaluate in modules/product/src/Plugin/Commerce/Condition/OrderItemProductCategory.php
Evaluates the condition.
OrderProductCategory::evaluate in modules/product/src/Plugin/Commerce/Condition/OrderProductCategory.php
Evaluates the condition.

File

modules/product/src/Plugin/Commerce/Condition/ProductCategoryTrait.php, line 132

Class

ProductCategoryTrait
Provides common configuration for the product category conditions.

Namespace

Drupal\commerce_product\Plugin\Commerce\Condition

Code

protected function getReferencedIds(ProductInterface $product) {
  $ids = [];
  foreach ($this
    ->getEntityReferenceFieldMap() as $field_name => $field_info) {
    if ($product
      ->hasField($field_name)) {
      $field = $product
        ->get($field_name);
      $field_definition = $field
        ->getFieldDefinition();
      $target_type = $field_definition
        ->getSetting('target_type');
      if ($target_type === 'taxonomy_term' && !$field
        ->isEmpty()) {
        foreach ($field
          ->getValue() as $index => $field_item) {
          $ids[] = $field_item['target_id'];
        }
      }
    }
  }
  return $ids;
}