首页 文章

Symfony3从DB生成Entites

提问于
浏览
2

Symfony的新功能...尝试从现有数据库创建实体 . 我试图按照http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html的说明进行操作

长话短说似乎我只需要3个命令:

$ php bin/console doctrine:mapping:import --force AppBundle xml $ php bin/console doctrine:mapping:convert annotation ./src $ php bin/console doctrine:generate:entities AppBundle

注意:我将AcmeBlogBundle的捆绑包名称修改为AppBundle,因为我只使用默认捆绑包 . 我也在使用Symfony 3,我在网上查找的所有内容似乎都引用了symfony2

无论如何,第一个命令似乎运行正常 . 我在./src/AppBundle/Resources/config/doctrine/路径中生成了orm.xml文件 . 命令2和3似乎是我的麻烦开始的地方 .

命令2导致

No Metadata Classes to process

命令3导致(显然命令2没有正常工作,但无论如何都尝试过)

[RuntimeException] Bundle "AppBundle" does not contain any mapped entities.

我在这里不知所措 .

config.yml的内容是:
imports: - {resource:parameters.yml}

  • {resource:security.yml}
  • {resource:services.yml}

将参数放在此处,无需在部署应用程序的每台计算机上进行更改

http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration

参数:locale:en

框架:#esi:〜
#translator:{fallbacks:["%locale%"]}
秘密:"%secret%"
路由器:
资源:"%kernel.root_dir%/config/routing.yml"
strict_requirements:〜
形式:〜
csrf_protection:〜
验证:{enable_annotations:true}
#serializer:{enable_annotations:true}
模板:
发动机:['twig']
#assets_version:SomeVersionScheme
default_locale:"%locale%"
trusted_hosts:〜
trusted_proxies:〜
Session :
#handler_id设置为null将使用php.ini中的默认会话处理程序
handler_id:〜
save_path:"%kernel.root_dir%/../var/sessions/%kernel.environment%"
片段:〜
http_method_override:true
资产:〜

Twig配置

枝条:
debug:"%kernel.debug%"
strict_variables:"%kernel.debug%"

学说配置

教义:
DBAL:
driver:pdo_mysql
主持人:"%database_host%"
端口:"%database_port%"
dbname:"%database_name%"
用户:"%database_user%"
密码:"%database_password%"
charset:UTF8
#如果使用pdo_sqlite作为数据库驱动程序:
#1.在parameters.yml中添加路径
#例如database_path:"%kernel.root_dir%/data/data.db3"
#2 . 在parameters.yml.dist中取消注释database_path
#3 . 取消注释下一行:
#path:"%database_path%"

orm:  
    auto_generate_proxy_classes: "%kernel.debug%"  
    naming_strategy: doctrine.orm.naming_strategy.underscore  
    auto_mapping: true

Swiftmailer配置

swiftmailer:
运输:"%mailer_transport%"
主持人:"%mailer_host%"
用户名:"%mailer_user%"
密码:"%mailer_password%"
spool:{type:memory}

我最后通过添加我认为上面的一个命令中的“--from database”标志来完成这个过程 . 我想第二个命令 . 我很确定你的配置是不正确的xml文件,这就是为什么它无法找到它们 .

1 回答

  • 2

    配置parameters.yml后,您可以直接运行以下命令 .

    php bin/console doctrine:mapping:import --force AppBundle annotation

    然后您可以运行此命令来生成实体

    php bin/console doctrine:generate:entities AppBundle

    在运行任何这些命令之前尝试数据库连接也很重要 . 尝试使用获取值

    php bin/console doctrine:query:sql "SELECT * FROM your_table_name"
    

相关问题