PHPackages                             tomfun/brander-eav - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. tomfun/brander-eav

AbandonedArchivedSymfony-bundle[Search &amp; Filtering](/categories/search)

tomfun/brander-eav
==================

helps to create entity that have different attributes (fields) in same database. Also provide integration with elastic search friendsofsymfony/elastica-bundle

v1.2.2(9y ago)26202[1 issues](https://github.com/tomfun/BranderEAVBundle/issues)MITPHP

Since Aug 18Pushed 9y ago1 watchersCompare

[ Source](https://github.com/tomfun/BranderEAVBundle)[ Packagist](https://packagist.org/packages/tomfun/brander-eav)[ RSS](/packages/tomfun-brander-eav/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (10)Versions (25)Used By (0)

### How it work, what is it

[](#how-it-work-what-is-it)

[read in russian](/how_it_work.ru.md)

### Install bundle

[](#install-bundle)

```
composer require tomfun/brander-eav
```

```
// app/AppKernel.php
    public function registerBundles()
    // ...
        new \Brander\Bundle\EAVBundle\BranderEAVBundle(),
        new FOS\ElasticaBundle\FOSElasticaBundle(),
        new JMS\AopBundle\JMSAopBundle(),
        new JMS\SerializerBundle\JMSSerializerBundle(), // optional
        new JMS\DiExtraBundle\JMSDiExtraBundle($this),

    // ...
```

```
# app/config/parameters.yml
# same add to app/config/parameters.yml.dist
parameters:
# .........
    locale: ru
```

[just **enable** elastica bundle](https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/Resources/doc/setup.md)[and add **base configuration**](https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/Resources/doc/setup.md#c-basic-bundle-configuration)

```
#app/config/config.yml
fos_elastica:
    clients:
        default: { host: localhost, port: 9200 }
    indexes:
        app: ~
```

### Requirements

[](#requirements)

- FOSElasticaBundle()
- JMSAopBundle()
- JMSDiExtraBundle($this)
- JS router with generate function
- Twigjs filters (for listing frontend)
    - trans
    - transchoice
- Compatible [gulp task](https://www.npmjs.com/package/brander-gulp-tasks) with twigjs compilation

### Configuration

[](#configuration)

#### First at all

[](#first-at-all)

- you must have entity you want to search
- query php class
- search result class

#### Config example

[](#config-example)

```
brander_eav:
  fixturesDirectory: /home/tomfun/fixtures-data
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  list_class_map:
    - Sdelka\Bundle\AdvertBundle\Entity\Advert #entity with eav values, auto find query and result classes in model dir
```

this expanded as:

```
brander_eav:
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  list_class_map:
    -
      entity: Sdelka\Bundle\AdvertBundle\Entity\Advert #orm entity
      query: Sdelka\Bundle\AdvertBundle\Model\AdvertQuery #query class. must exist.
      result: Sdelka\Bundle\AdvertBundle\Model\AdvertQuery #result class. must exist.
      serviceClass: Brander\Bundle\EAVBundle\Service\Elastica\EavList #service class
```

also **you must implement** some interfaces (e.g. *SearchableEntityInterface*). name of listing service in this case: "brander\_eav.elastica.list.sdelka\_advert.advert"

if you don't need **auto configuration of elastica bundle**, you can use simple serialize directive (searchable) and configure elastic search bundle manually:

```
brander_eav:
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  searchable:
    - Sdelka\Bundle\AdvertBundle\Entity\Advert #orm entity
```

#### show auto-generated lists (inner elastica index name / type name):

[](#show-auto-generated-lists-inner-elastica-index-name--type-name)

```
app/console de:cont | grep "brander_eav.elastica.list"

```

#### Routing

[](#routing)

in app/config/routing.yml add this lines:

```
# app/config/routing.yml
eav:
  resource: "@BranderEAVBundle/Resources/config/routing.yml"
  options:
    i18n: false
    expose: true
```

default admin url is **/admin/eav/manage/**

### Security

[](#security)

if you want *grant access for admin part for non admin* (example: manager)

```
brander_eav:
  useJmsSerializer: false #turn off standard elastica serializer for known entity
  manageRole: ROLE_MANAGER
```

or for *anonymous*: `manageRole: "anon."`or rewrite voter service: *brander\_eav.security.universal\_voter*.

also look into [ElasticaSkeletonBundle](https://github.com/tomfun/BranderElasticaSkeletonBundle/blob/master/README.md)

todo:

- vendor/werkint/stats-bundle/src/Service/Security/Voter/StatsVoter.php supportsAttribute
- backbone.modelbinder -&gt; stickit

wtf: cache.app voter Twig\\BranderEAVExtension \\Brander\\Bundle\\EAVBundle\\DependencyInjection\\BranderEAVExtension::getConfiguration

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 75% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~28 days

Total

23

Last Release

3293d ago

Major Versions

v0.0.7 → v1.0.02016-08-23

### Community

Maintainers

![](https://www.gravatar.com/avatar/d6527e7289f517fbe12de895fde76e2fb2eead8559b676e2be5f9e3c00a6cd22?d=identicon)[tomfun1990@gmail.com](/maintainers/tomfun1990@gmail.com)

---

Top Contributors

[![tomfun](https://avatars.githubusercontent.com/u/5002775?v=4)](https://github.com/tomfun "tomfun (57 commits)")[![mom666](https://avatars.githubusercontent.com/u/12764309?v=4)](https://github.com/mom666 "mom666 (19 commits)")

---

Tags

searchelasticsearchelasticaeaventity-attribute-value

### Embed Badge

![Health badge](/badges/tomfun-brander-eav/health.svg)

```
[![Health](https://phpackages.com/badges/tomfun-brander-eav/health.svg)](https://phpackages.com/packages/tomfun-brander-eav)
```

###  Alternatives

[elasticsearch/elasticsearch

PHP Client for Elasticsearch

5.3k178.3M943](/packages/elasticsearch-elasticsearch)[jolicode/elastically

Opinionated Elastica based framework to bootstrap PHP and Elasticsearch implementations.

2571.7M1](/packages/jolicode-elastically)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15224.3M65](/packages/opensearch-project-opensearch-php)[jsq/amazon-es-php

Support for using IAM authentication with the official Elasticsearch PHP client

9310.6M13](/packages/jsq-amazon-es-php)[heyday/silverstripe-elastica

Provides Elastic Search integration for SilverStripe DataObjects using Elastica

1136.8k2](/packages/heyday-silverstripe-elastica)[cmsig/seal

Search Engine Abstraction Layer

32207.9k53](/packages/cmsig-seal)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
