Componette

Componette

janpecha

janpecha / leanmapper-extension v0.9.2

Lean Mapper extension for Nette

download-cloud-line composer require janpecha/leanmapper-extension

LeanMapper-extension

Tests Status

Lean Mapper extension for Nette.

Support Me

Do you like LeanMapper-extension? Are you looking forward to the new features?

PayPal or credit/debit card

Bitcoin bc1qrq9egf99a6z3576twggrp6uv5td5r3pq0j4awe

Thank you!

Installation

Download a latest package or use Composer:

composer require janpecha/leanmapper-extension

Extension requires:

  • PHP 5.6 or later
  • Nette 2.4 or later
  • LeanMapper 3.0 or later

Usage

extensions:
	leanmapper: JP\LeanMapperExtension\LeanMapperExtension


leanmapper:
	# database connection
	username: ...
	password: ...
	database: ...

Configuration

Database connection

leanmapper:
	# required
	username: ...
	password: ...
	database: ...

	# optional
	connection: LeanMapper\Connection
	host: localhost
	driver: mysqli
	lazy: true
	profiler: ...    # on|off or NULL => enabled in debug mode, disabled in production mode
	charset: utf8mb

Entities

leanmapper:
	entityFactory: LeanMapper\DefaultEntityFactory
	entityMapping:
		table: EntityClass

		table:
			entity: EntityClass
			repository: RepositoryClass # only mapping, you need manually register repository to DI
			primaryKey: table_primary_key

		articles:
			entity: App\Model\Article
			primaryKey: article_id

Mapper

leanmapper:
	mapper: true # bool
	defaultEntityNamespace: 'Model\Entity'
	nameMapping: camelcase # default | camelcase | underscore
	prefix: null

Support for addons

use Nette\DI\CompilerExtension;
use JP\LeanMapperExtension\IEntityProvider;

class FooExtension extends CompilerExtension implements IEntityProvider
{
	// from IEntityProvider
	function getEntityMappings()
	{
		return array(
			array(
				'table' => 'foo_articles',
				'primaryKey' => 'id',
				'entity' => Foo\Model\Article::class,
				'repository' => Foo\Model\ArticleRepository::class, # only mapping, you need manually register repository to DI
			),
			// ...
		);
	}
}

STI mapping

use Nette\DI\CompilerExtension;
use JP\LeanMapperExtension\IStiMappingProvider;

class FooExtension extends CompilerExtension implements IStiMappingProvider
{
	function getStiMappings()
	{
		return [
			[
				'baseEntity' => Model\Entity\Client::class,
				'type' => 'company',
				'entity' => Model\Entity\ClientCompany::class,
			],
			// ...
		];
	}


	function getStiTypeFields()
	{
		return [
			Model\Entity\Client::class => 'clientType',
		];
	}
}

Row mapping

use Nette\DI\CompilerExtension;
use JP\LeanMapperExtension\IRowMappingProvider;

class FooExtension extends CompilerExtension implements IRowMappingProvider
{
	function getRowFieldMappings()
	{
		return [
			[
				'entity' => \Model\Entity\OrderItem::class,
				'field' => 'currency',
				'fromDbValue' => [static::class, 'currencyFromDb'],
				'toDbValue' => [static::class, 'currencyToDb'],
			],
			// ...
		];
	}


	function getRowMultiValueMappings()
	{
		return [
			[
				'entity' => \Model\Entity\OrderItem::class,
				'field' => 'price',
				'fromDbValue' => [static::class, 'priceFromDb'],
				'toDbValue' => [static::class, 'priceToDb'],
			],
		];
	}


	static function currencyFromDb($value)
	{
		return strtoupper($value);
	}


	static function currencyToDb($value)
	{
		return strtolower($value);
	}


	static function priceFromDb(array $values)
	{
		return [$values['price'], $values['currency']];
	}


	static function priceToDb($value)
	{
		return [
			'price' => $value[0],
		];
	}
}

License: New BSD License
Author: Jan Pecha, http://janpecha.iunas.cz/

  • v0.9.2 Version 0.9.2

    • Composer: added tharos/leanmapper 3.x
    • Composer: updated constraints
    • updated coding-style
    • Travis CI: added PHP 7.1
    • Travis CI: updated
    • Tests: added Makefile
  • v0.9.1 Version 0.9.1

    • minor fixes, typos
  • v0.9.0 Version 0.9.0

    First public release

bar-chart-fill

Statistics

download-cloud-fill
4094
star-fill
3
bug-fill
1
flashlight-fill
2.1y
price-tag-2-line

Badges

guide-fill

Dependencies

php (>=5.3.0)
nette/di (^2.2)
tharos/leanmapper (^2.2 || ^3.0)
Componette Componette felix@nette.org