Important
You are browsing the documentation for version 4.2 of OroCommerce, OroCRM and OroPlatform, which is no longer maintained. Read version 5.1 (the latest LTS version) of the Oro documentation 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 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 that are not supported in MySQL from the index definition.