Important
You are browsing documentation for version 5.0 of OroCommerce. Support of this version ended in January 2025. Read the documentation for version 6.1 (the latest LTS version) to get up-to-date information.
See our Release Process documentation for more information on the currently supported and upcoming releases.
Partial Indexes
To use a partial index for the entity field, add the following condition as an additional option to the index definition:
$table->addIndex(['is_featured'], 'idx_oro_product_featured', [], ['where' => '(is_featured = true)']);
Note
PostgreSQL supports partial indexes, however MySQL does not. For MySQL, the additional option causes the database schema diversion.
To eliminate the negative impact for the MySQL-based instances and automatically adjust their database schema, declare the following service:
oro_product.event_listener.orm.featured_index_listener:
class: Oro\Bundle\EntityBundle\EventListener\ORM\PartialIndexListener
public: false
arguments:
- 'oro_product'
- 'idx_oro_product_featured'
tags:
- { name: doctrine.event_listener, event: loadClassMetadata }
The service removes the options not supported in MySQL from the index definition.