janpecha/leanmapper-extension
最新稳定版本:v1.0.0
Composer 安装命令:
composer require janpecha/leanmapper-extension
包简介
LeanMapper extension for Nette DI
README 文档
README
Lean Mapper extension for Nette.
Installation
Download a latest package or use Composer:
composer require janpecha/leanmapper-extension
Extension requires:
- PHP 7.2 or later
- Nette 3.0 or later
- LeanMapper 4.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 [ Model\Entity\Client::class => [ // base entity // type => target entity 'company' => 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 [ \Model\Entity\OrderItem::class => [ 'currency' => [ 'fromDbValue' => [static::class, 'currencyFromDb'], 'toDbValue' => [static::class, 'currencyToDb'], ] ], // ... ]; } function getRowMultiValueMappings() { return [ \Model\Entity\OrderItem::class => [ '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/
统计信息
- 总下载量: 10.49k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 1
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2014-09-14