if (is_null($field_storage_definition)) { // When the field storage definition is NULL, this specifier is the
// first specifier in an entity query field path or the previous
// specifier was a data reference that has been traversed. In both
// cases, the specifier must be a field name.
$field_storage_definitions =
static::
$fieldManager->
getFieldStorageDefinitions($entity_type_id);
static::
secureQuery($query,
$entity_type_id,
$children,
$cacheability,
$child_prefix,
$field_storage_definitions[$specifier]);
// When $field_prefix is NULL, this must be the first specifier in the
// entity query field path and a condition for the query's base entity
// type must be applied.
if (is_null($field_prefix)) { static::
applyAccessConditions($query,
$entity_type_id, NULL,
$cacheability);
} } else { // When the specifier is an entity reference, it can contain an entity
// type specifier, like so: `entity:node`. This extracts the `entity`
// portion. JSON:API will have already validated that the property
// exists.
$split_specifier =
explode(':',
$specifier, 2
);
[$property_name,
$target_entity_type_id] =
array_merge($split_specifier,
count($split_specifier) === 2 ?
[] :
[NULL
]);
// The specifier is either a field property or a delta. If it is a data
// reference or a delta, then it needs to be traversed to the next