PHPackages                             freezy-bee/doctrine-form-mapper - 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. [Database &amp; ORM](/categories/database)
4. /
5. freezy-bee/doctrine-form-mapper

ActiveLibrary[Database &amp; ORM](/categories/database)

freezy-bee/doctrine-form-mapper
===============================

Forms mapping of Doctrine ORM entities for Nette Framework

1.9.1(3mo ago)418.7k↓26.5%2MITPHPPHP ^8.1CI passing

Since Apr 30Pushed 3mo ago5 watchersCompare

[ Source](https://github.com/FreezyBee/DoctrineFormMapper)[ Packagist](https://packagist.org/packages/freezy-bee/doctrine-form-mapper)[ RSS](/packages/freezy-bee-doctrine-form-mapper/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (12)Versions (23)Used By (0)

Quickstart
==========

[](#quickstart)

[![Build Status](https://camo.githubusercontent.com/1769f519946f811100350410bdca627ec304043a7c7a943693ccc802faee03a8/68747470733a2f2f7472617669732d63692e6f72672f467265657a794265652f446f637472696e65466f726d4d61707065722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/FreezyBee/DoctrineFormMapper)[![Coverage Status](https://camo.githubusercontent.com/6aa67b553e5a55fdce04482461d00a7dee5dea18c6feb671053ab896a4bb3faf/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f467265657a794265652f446f637472696e65466f726d4d61707065722f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/github/FreezyBee/DoctrineFormMapper?branch=master)

Installation
------------

[](#installation)

The best way to install FreezyBee/DoctrineFormMapper is using [Composer](http://getcomposer.org/):

```
$ composer require freezy-bee/doctrine-form-mapper
```

config.neon

```
extensions:
    formMapper: FreezyBee\DoctrineFormMapper\DI\FormMapperExtension

# optional settings
formMapper:
    mappers:
        - CustomMapper()
    entityManager: @customEntityManager # default autowired EntityManagerInterface
```

Extension is responsible for registering service FreezyBee\\DoctrineFormMapper\\DoctrineFormMapper, you can autowire it.

Documentation
-------------

[](#documentation)

### Usage

[](#usage)

```
use FreezyBee\DoctrineFormMapper\DoctrineFormMapper;
use FreezyBee\DoctrineFormMapper\IComponentMapper;

class XPresenter extends Presenter
{
    /** @var DoctrineFormMapper @inject */
    public $mapper;

    /** @var EntityRepository @inject */
    public $articlesRepository;

    protected function createComponentForm()
    {
        $form = new Form;

        // Column
        $form->addText('name');

        // ManyToOne
        $form->addSelect('author')
            // order items
            ->setOption(IComponentMapper::ITEMS_ORDER, ['age' => 'ASC'])
            // filter items
            ->setOption(IComponentMapper::ITEMS_FILTER, ['age' => 0])
            // filter items by callback
            ->setOption(IComponentMapper::ITEMS_FILTER, function(QueryBuilder $qb) {
                $qb->andWhere('entity.age != 0')
            })
            // custom select label renderer
            ->setOption(IComponentMapper::ITEMS_TITLE, function (Author $author) {
                return $author->getName() . ' - ' . $author->getAge();
            });

        // ManyToOne
        $form->addRadioList('tags')
            ->setOption(IComponentMapper::ITEMS_TITLE, 'name');

        // ManyToMany
        $form->addMultiSelect('users')
            ->setOption(IComponentMapper::ITEMS_TITLE, 'username');

        // ManyToMany
        // btw you can define items and then ITEMS_TITLE is not required
        $form->addCheckboxList('countries', 'Countries', [1 => 'CZ', 2 => 'SK']);

        // A) create new entity
        $article = new Article;

        // B) load entity from db
        $article = $this->articlesRepository->find(1);

        // C) create new entity by class name - see point INFO below
        $article = Article::class;

        // load data from entity to form
        $this->mapper->load($article, $form);

        $form->onSuccess[] = function (Form $form) use ($article) {

            // save (map) data from form to entity - without flush!!!
            $articleEntity = $this->mapper->save($article, $form);

            // INFO - if article was classname, mapper create new instance
            // $articleEntity is instanceof Article

            // flush data...
            $em = $this->mapper->getEntityManager();
            $em->persist($articleEntity)
            $em->flush();
        };

        return $form;
    }
}
```

###  Health Score

56

—

FairBetter than 98% of packages

Maintenance81

Actively maintained with recent releases

Popularity31

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity81

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 100% 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 ~152 days

Recently: every ~200 days

Total

22

Last Release

100d ago

PHP version history (5 changes)v1.0.0-beta5PHP ~7.0

v1.1.0PHP ~7.1

v1.3.0PHP ~7.3 || ^8.0

v1.5.0PHP ~7.4 || ^8.0

1.9.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/c14a021b533c4b847148a4faaab99d847de3a4b52ade91557406e569c5b57709?d=identicon)[janatjak](/maintainers/janatjak)

---

Top Contributors

[![janatjak](https://avatars.githubusercontent.com/u/11320085?v=4)](https://github.com/janatjak "janatjak (51 commits)")

---

Tags

nettedoctrinemappingForms

###  Code Quality

Static AnalysisPHPStan

Code StyleECS

Type Coverage Yes

### Embed Badge

![Health badge](/badges/freezy-bee-doctrine-form-mapper/health.svg)

```
[![Health](https://phpackages.com/badges/freezy-bee-doctrine-form-mapper/health.svg)](https://phpackages.com/packages/freezy-bee-doctrine-form-mapper)
```

###  Alternatives

[kdyby/doctrine

Doctrine integration into Nette Framework

1091.0M86](/packages/kdyby-doctrine)[nettrine/orm

Doctrine ORM for Nette Framework

581.9M37](/packages/nettrine-orm)[nettrine/fixtures

Doctrine Fixtures for Nette Framework

181.2M8](/packages/nettrine-fixtures)[nettrine/dbal

Doctrine DBAL for Nette Framework

322.6M19](/packages/nettrine-dbal)[nettrine/extensions-atlantic18

Doctrine2 behavioral extensions for Nette Framework

12922.2k3](/packages/nettrine-extensions-atlantic18)

PHPackages © 2026

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