Important

You are browsing the documentation for version 4.1 of OroCommerce, OroCRM and OroPlatform, which is no longer maintained. Security Support ends in January 2023. Read version 5.0 (the latest LTS version) of the Oro documentation to get the updated information.

See our Release Process documentation for more information on the currently supported and upcoming releases.

Query Builder

To perform search queries, you need to use the query builder => \Oro\Bundle\SearchBundle\Query\Query.

Example:

1
2
3
4
5
$query = (new Query())
        ->select('sku')
        ->from('oro_search_product')
        ->andWhere('all_data', '=', 'Functions', 'text')
        ->orWhere('price', '>', 85, 'decimal');

Syntax of Query builder is close to Doctrine 2.

  • select() - accepts a string or array of strings that represent field names in the search index. The values of those fields will be returned in the selected_data key of the response items. The select() parser will also accept SQL fieldname aliasing syntax, for example:
1
2
$query = (new Query())
        ->select('fieldvalue as name')

NOTE: If you do not want to overwrite the existing fields, use the addSelect() method. * from() - takes array or string of entity aliases to search from. If the argument was *, then the search will be performed for all entities.

  • andWhere(), orWhere() - functions set AND WHERE and OR WHERE functions in search request.
    • First argument - field name to search from. It can be set to * for searching by all fields.
    • Second argument - operators <, >, =, !=, etc. If first argument is for text field, this parameter will be ignored.
    • Third argument - value to search
    • Fourth argument - field type.
  • setFirstResult() - set the first result offset
  • setMaxResults() - set max results of records in result.

As the result of the query, Oro\Bundle\SearchBundle\Query\Result will be returned with the information about the search query and result items.