1、安装好doctrine,在composer.json中添加如下
"require": { "php": "^5.6 || ^7.0", "doctrine/doctrine-orm-module": "*", },
执行composer install
2、在yourAPP/config/modules.config.php添加doctrine module
return [ 'ZendServiceManagerDi', 'ZendSession', 'ZendMvcPluginPrg', 'ZendMvcPluginIdentity', 'ZendMvcPluginFlashMessenger', 'ZendMvcPluginFilePrg', 'ZendMvcI18n', 'ZendMvcConsole', 'ZendLog', 'ZendForm', 'ZendDb', 'ZendCache', 'ZendRouter', 'ZendValidator', 'ZendDeveloperTools', 'Application', 'DoctrineModule', 'DoctrineORMModule', ];
3、在yourAPP/config/autoload/local.php添加如下
<?php /** * Local Configuration Override * * This configuration override file is for overriding environment-specific and * security-sensitive configuration information. Copy this file without the * .dist extension at the end and populate values as needed. * * @NOTE: This file is ignored from Git by default with the .gitignore included * in ZendSkeletonApplication. This is a good practice, as it prevents sensitive * credentials from accidentally being committed into version control. */ use DoctrineDBALDriverPDOMySqlDriver as PDOMySqlDriver; return [ 'doctrine' => [ 'connection' => [ 'orm_default' => [ 'driverClass' => PDOMySqlDriver::class, 'params' => [ 'host' => '10.11.1.2', 'port' => '3306', 'user' => 'xxx', 'password' => 'xxx', 'dbname' => 'user_shanmaohuwai', ] ], ], ], ];
4、使用doctrine命令生成entity(https://www.e-learn.cn/content/wangluowenzhang/609311)
问题:
I am using "doctrine/doctrine-orm-module": "0.7.0" with ZF2.
Once I create Entities I usually run following commands to sync and generate database automatically according to my entities.
./vendor/bin/doctrine-module orm:validate-schema
./vendor/bin/doctrine-module orm:schema-tool:create
Is there a way to make this process reverse? I mean, Can I generate entities from existing database in mysql?
回答1:
We use a batch script:
@ECHO OFF mkdir EXPORT call .vendorindoctrine-module orm:convert-mapping --force --from-database annotation ./EXPORT/ call .vendorindoctrine-module orm:generate-entities ./EXPORT/ --generate-annotations=true pause
orm:convert-mapping
and orm:generate-entities
is probably what you are looking for.
回答2:
There's a nice blog written on this here
Edit: It can be done by using the commands below:
1. convert-mapping (Table & Entity):
./vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --namespace="Album\Entity\" --force --from-database annotation ./module/Album/src/
2. Generates getter and setter
./vendor/doctrine/doctrine-module/bin/doctrine-module orm:generate-entities ./module/Album/src/ --generate-annotations=true
回答3:
Try just it
doctrine orm:convert-mapping -f --from-database annotation entities/ doctrine orm:generate-entities --generate-annotations="true" entities/
http://wildlyinaccurate.com/useful-doctrine-2-console-commands/
cd appdir ./vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --namespace="Application\Entity\" --force --from-database annotation ./module/Application/src/
./vendor/doctrine/doctrine-module/bin/doctrine-module orm:generate-entities ./module/Application/src/ --generate-annotations=true