function EntityFieldQuery::queryCallback

Determines the query callback to use for this entity query.

Return value

A callback that can be used with call_user_func().

1 call to EntityFieldQuery::queryCallback()
EntityFieldQuery::execute in includes/entity.inc
Executes the query.

File

includes/entity.inc, line 1230

Class

EntityFieldQuery
Retrieves entities matching a given set of conditions.

Code

public function queryCallback() {
    // Use the override from $this->executeCallback. It can be set either
    // while building the query, or using hook_entity_query_alter().
    if (function_exists($this->executeCallback)) {
        return $this->executeCallback;
    }
    // If there are no field conditions and sorts, and no execute callback
    // then we default to querying entity tables in SQL.
    if (empty($this->fields)) {
        return array(
            $this,
            'propertyQuery',
        );
    }
    // If no override, find the storage engine to be used.
    foreach ($this->fields as $field) {
        if (!isset($storage)) {
            $storage = $field['storage']['module'];
        }
        elseif ($storage != $field['storage']['module']) {
            throw new EntityFieldQueryException(t("Can't handle more than one field storage engine"));
        }
    }
    if ($storage) {
        // Use hook_field_storage_query() from the field storage.
        return $storage . '_field_storage_query';
    }
    else {
        throw new EntityFieldQueryException(t("Field storage engine not found."));
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.