我正在尝试使用不同的配置来处理新项目。
我想做的是通过手写sql来创建数据库 之后我想做一个从数据库到“YML”而不是php注释的转换映射。 因此,为了完成它,我想将这些YML映射信息转换为ZF2模块内的Doctrine Entity。
我在作曲家中使用:
"doctrine/doctrine-orm-module" : "0.7.0",
"doctrine/doctrine-module" : "0.7.*",
在global.php配置中
'doctrine' => array(
'connection' => array(
// default connection name
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'root',
'password' => '****',
'dbname' => 'gear',
'charset' => 'utf8'
),
)
)
),
在目标模块上
'doctrine' => array(
'driver' => array(
/* This is where you can change the Mapping Driver */
'orm_default' => array(
'drivers' => array(
'Application\Entity' => 'application_entities_yaml'
),
),
'application_entities_yaml' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\YamlDriver',
'paths' => array(__DIR__ . '/../src/' .__NAMESPACE__. '/Yml')
),
),
),
我希望在ZF2 Action上使用自定义位置来放置YML注释我使用生成此命令的exec:
vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --namespace="Gear\\Entity\\" --force --from-database yml module/Gear/src/Gear/Yml
谁将YML映射数据保存到文件夹模块/ Gear / src / Gear / Yml中 这正是我在模块配置文件中放入“application_entities_yaml”的路径。
但是当我尝试最终创建实体以完成工作时,使用以下命令:
vendor/doctrine/doctrine-module/bin/doctrine-module orm:generate-entities module/Gear/src/
或
vendor/doctrine/doctrine-module/bin/doctrine-module orm:generate-entities --generate-annotations=1 module/Gear/src/
我得到了:
'No Metadata Classes to process.'
我需要发现make Doctrine如何识别我放置元数据类的位置,以避免这些错误并继续执行项目。我将与YML实体合作,因为我教授非'php'程序员编写实体的最佳方式。因此,与YML合作非常重要。
如何让Doctrine识别那些映射并毫无问题地转换为实体?
答案 0 :(得分:1)
在目标模块上
只需将Application \ Entity更改为Module \ Entity又名Gear \ Entity,它就可以了!
'doctrine' => array(
'driver' => array(
/* This is where you can change the Mapping Driver */
'orm_default' => array(
'drivers' => array(
'Gear\Entity' => 'application_entities_yaml'
),
),
'application_entities_yaml' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\YamlDriver',
'paths' => array(__DIR__ . '/../src/' .__NAMESPACE__. '/Yml')
),
),
),