Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/intaro/custom-index-bundle
The bundle allows to describe and create non-standard database indexes for entities
https://github.com/intaro/custom-index-bundle
bundle php symfony symfony-bundle
Last synced: 7 days ago
JSON representation
The bundle allows to describe and create non-standard database indexes for entities
- Host: GitHub
- URL: https://github.com/intaro/custom-index-bundle
- Owner: intaro
- License: mit
- Created: 2014-06-08T12:51:41.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2022-07-05T12:03:17.000Z (over 2 years ago)
- Last Synced: 2023-12-19T15:02:22.026Z (about 1 year ago)
- Topics: bundle, php, symfony, symfony-bundle
- Language: PHP
- Size: 38.1 KB
- Stars: 25
- Watchers: 15
- Forks: 16
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CustomIndexBundle
The CustomIndexBundle allows create index for doctrine entities using attribute with entity definition and console command.
## Installation
CustomIndexBundle requires Symfony 5 or higher. Works only with PostgreSQL.
Run into your project directory:
```
$ composer require intaro/custom-index-bundle
```Register the bundle in `config/bundles.php`:
```php
['all' => true],
];
```If your project have many schemas in single database and command must generate custom indexes only for one schema then add in your `config.yml`:
```yaml
intaro_custom_index:
search_in_all_schemas: false
allowed_index_types: ['gin', 'gist', 'btree', 'hash']```
Default value of `search_in_all_schemas` is `true`.
If you have different entities in different schemas and you need to update custom indexes in all schemas at once then you must set `search_in_all_schemas` to `true` or omit this config.
If you have database with only public schema then `search_in_all_schemas` value doesn't matter.Parameter `allowed_index_types` helps to exclude some types of indexes. If someone will try to use excluded type, command `intaro:doctrine:index:update` will return an error.
Default value is `['gin', 'gist', 'btree', 'hash']`.## Usage
1) Add attributes in your entity
```php
'`).
* `unique` - index is unique (default = false).
* `using` - corresponds to `USING` directive in PostgreSQL `CREATE INDEX` command.
* `where` - corresponds to `WHERE` directive in PostgreSQL `CREATE INDEX` command.Required only `columns` property.
2) Use `intaro:doctrine:index:update` command for update db.
```
php app/console intaro:doctrine:index:update
```You may use `dump-sql` parameter for dump sql with `DROP/CREATE INDEX` commands
```
php app/console intaro:doctrine:index:update --dump-sql
```## Examples
Create index using `pg_trgm` extension:
```php