public FieldStorageConfigStorage::loadByProperties(array $conditions = array())
Load entities by their property values.
Parameters
array $values: An associative array where the keys are the property names and the values are the values those properties must have.
Return value
\Drupal\Core\Entity\EntityInterface[] An array of entity objects indexed by their ids.
Overrides EntityStorageBase::loadByProperties
File
- core/modules/field/src/FieldStorageConfigStorage.php, line 97
Class
- FieldStorageConfigStorage
- Controller class for "field storage" configuration entities.
Namespace
Drupal\field
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | public function loadByProperties( array $conditions = array ()) { // Include deleted fields if specified in the $conditions parameters. $include_deleted = isset( $conditions [ 'include_deleted' ]) ? $conditions [ 'include_deleted' ] : FALSE; unset( $conditions [ 'include_deleted' ]); /** @var \Drupal\field\FieldStorageConfigInterface[] $storages */ $storages = array (); // Get field storages living in configuration. If we are explicitly looking // for deleted storages only, this can be skipped, because they will be // retrieved from state below. if ( empty ( $conditions [ 'deleted' ])) { if (isset( $conditions [ 'entity_type' ]) && isset( $conditions [ 'field_name' ])) { // Optimize for the most frequent case where we do have a specific ID. $id = $conditions [ 'entity_type' ] . $conditions [ 'field_name' ]; $storages = $this ->loadMultiple( array ( $id )); } else { // No specific ID, we need to examine all existing storages. $storages = $this ->loadMultiple(); } } // Merge deleted field storages (living in state) if needed. if ( $include_deleted || ! empty ( $conditions [ 'deleted' ])) { $deleted_storages = $this ->state->get( 'field.storage.deleted' ) ? : array (); foreach ( $deleted_storages as $id => $config ) { $storages [ $id ] = $this ->create( $config ); } } // Collect matching fields. $matches = array (); foreach ( $storages as $field ) { foreach ( $conditions as $key => $value ) { // Extract the actual value against which the condition is checked. $checked_value = $field ->get( $key ); // Skip to the next field as soon as one condition does not match. if ( $checked_value != $value ) { continue 2; } } // When returning deleted fields, key the results by UUID since they can // include several fields with the same ID. $key = $include_deleted ? $field ->uuid() : $field ->id(); $matches [ $key ] = $field ; } return $matches ; } |
Please login to continue.