dodo-it/dibi-entity

This package is abandoned and no longer maintained. The author suggests using the dodo-it/entity-generator package instead.

Entity generator from database for almost any DBAL

Maintainers

Details

github.com/dodo-it/dibi-entity

Installs: 282

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 0

pkg:composer/dodo-it/dibi-entity

This package has no released version yet, and little information is available.


README

Typed entity generator from database. It can generate entities for whole database, table/view and from query

Installation

$ composer require dodo-it/entity-generator

For Nette users:

register extension in your config.neon:

extensions:
    entityGenerator: DodoIt\EntityGenerator\DI\EntityGeneratorExtension

configuration, these are defaults, so you need to provide it only if this doesn't suit you:

entityGenerator:
    path: %appDir%/Models/Entities
    namespace: App\Models\Entities
    typeMapping:
        int:
            - int
            - bigint
            - mediumint
            - smallint
        float:
            - decimal
            - float
        bool:
            - bit
            - tinyint
        '\DateTime':
            - date
            - datetime
            - timestamp
        '\DateInterval':
            - time
    replacements:
      #table: entityName
    prefix: ''
    sufix: 'Entity'
    extends: '\DodoIt\EntityGenerator\Entity'
    gettersAndSetters: true
    propertyVisibility: protected

USAGE:

run php bin/console entity

sample usage for generated entities:

//generates all entities from tables and views in database 
console entity:generate

//generate entity for table users
console entity:generate users

//generate entity  UserWithAddress from query
console entity:generate UserWithAddress --query="SELECT u.*, a.street FROM users u LEFT JOIN addresses a ON a.user_id = u.id"

select:

$this->db->select('*')->from('users')->where('id = %i', $id)
			->execute()
			->setRowClass(User::class)
			->fetch();

update/insert:

$user = new User();
$user->setUsername('user1');
$user->setColumn2(NULL);
$user->setColumn3(5);
$this->db->update('users', $user->_getModifications())->where('id = %i', 22);
// UPDATE users SET ´username´ = 'user1', column_2 = 5, column_3 = NULL WHERE id = 22

You can also add your own methods to entities and change getter/setter functions, they won't be overriden when regenerated