Issue #2247095 by yched, xjm, alexpott: Optimize loading of deleted fields.
parent
6e70062d78
commit
fee42cb6b3
|
@ -97,19 +97,25 @@ class FieldConfigStorage extends ConfigEntityStorage {
|
|||
$include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE;
|
||||
unset($conditions['include_deleted']);
|
||||
|
||||
// Get fields stored in configuration.
|
||||
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'];
|
||||
$fields = $this->loadMultiple(array($id));
|
||||
}
|
||||
else {
|
||||
// No specific ID, we need to examine all existing fields.
|
||||
$fields = $this->loadMultiple();
|
||||
$fields = array();
|
||||
|
||||
// Get fields stored in configuration. If we are explicitly looking for
|
||||
// deleted fields 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'];
|
||||
$fields = $this->loadMultiple(array($id));
|
||||
}
|
||||
else {
|
||||
// No specific ID, we need to examine all existing fields.
|
||||
$fields = $this->loadMultiple();
|
||||
}
|
||||
}
|
||||
|
||||
// Merge deleted fields (stored in state) if needed.
|
||||
if ($include_deleted) {
|
||||
if ($include_deleted || !empty($conditions['deleted'])) {
|
||||
$deleted_fields = $this->state->get('field.field.deleted') ?: array();
|
||||
foreach ($deleted_fields as $id => $config) {
|
||||
$fields[$id] = $this->create($config);
|
||||
|
|
|
@ -104,19 +104,25 @@ class FieldInstanceConfigStorage extends ConfigEntityStorage {
|
|||
$include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE;
|
||||
unset($conditions['include_deleted']);
|
||||
|
||||
// Get instances stored in configuration.
|
||||
if (isset($conditions['entity_type']) && isset($conditions['bundle']) && isset($conditions['field_name'])) {
|
||||
// Optimize for the most frequent case where we do have a specific ID.
|
||||
$id = $conditions['entity_type'] . '.' . $conditions['bundle'] . '.' . $conditions['field_name'];
|
||||
$instances = $this->loadMultiple(array($id));
|
||||
}
|
||||
else {
|
||||
// No specific ID, we need to examine all existing instances.
|
||||
$instances = $this->loadMultiple();
|
||||
$instances = array();
|
||||
|
||||
// Get instances stored in configuration. If we are explicitly looking for
|
||||
// deleted instances only, this can be skipped, because they will be
|
||||
// retrieved from state below.
|
||||
if (empty($conditions['deleted'])) {
|
||||
if (isset($conditions['entity_type']) && isset($conditions['bundle']) && isset($conditions['field_name'])) {
|
||||
// Optimize for the most frequent case where we do have a specific ID.
|
||||
$id = $conditions['entity_type'] . '.' . $conditions['bundle'] . '.' . $conditions['field_name'];
|
||||
$instances = $this->loadMultiple(array($id));
|
||||
}
|
||||
else {
|
||||
// No specific ID, we need to examine all existing instances.
|
||||
$instances = $this->loadMultiple();
|
||||
}
|
||||
}
|
||||
|
||||
// Merge deleted instances (stored in state) if needed.
|
||||
if ($include_deleted) {
|
||||
if ($include_deleted || !empty($conditions['deleted'])) {
|
||||
$deleted_instances = $this->state->get('field.instance.deleted') ?: array();
|
||||
$deleted_fields = $this->state->get('field.field.deleted') ?: array();
|
||||
foreach ($deleted_instances as $id => $config) {
|
||||
|
|
Loading…
Reference in New Issue