dodo-it/dibi-entity

该包已被放弃且不再维护。作者建议使用dodo-it/entity-generator包。

适用于几乎所有DBAL的数据库实体生成器

维护者

详细信息

github.com/dodo-it/dibi-entity

此包尚未发布任何版本,可用的信息不多。


README

从数据库生成的类型化实体生成器。它可以生成整个数据库、表/视图和查询的实体

安装

$ composer require dodo-it/entity-generator

对于Nette用户

在您的config.neon配置中注册扩展

extensions:
    entityGenerator: DodoIt\EntityGenerator\DI\EntityGeneratorExtension

配置,这些是默认值,所以只有当这不适合您时才需要提供它

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

使用方法

运行 php bin/console entity

生成的实体的示例使用方法

//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"

选择

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

更新/插入

$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

您也可以向实体添加自己的方法并更改getter/setter函数,它们在重新生成时不会被覆盖