Php 使用symfony2和条令从现有数据库生成单个实体
是否可以使用Symfony2控制台工具从数据库生成单个实体 在编码过程中,我不得不添加一个表,并对现有的实体类进行了修改。所以我不想让我所有的实体再生Php 使用symfony2和条令从现有数据库生成单个实体,php,database,symfony,doctrine,Php,Database,Symfony,Doctrine,是否可以使用Symfony2控制台工具从数据库生成单个实体 在编码过程中,我不得不添加一个表,并对现有的实体类进行了修改。所以我不想让我所有的实体再生 如有任何建议,将不胜感激 我也有同样的问题,你必须这样做: php app/console doctrine:mapping:convert metadata_format \ ./src/App/MyBundle/Resources/config/doctrine \ --from-database \ --filter
如有任何建议,将不胜感激 我也有同样的问题,你必须这样做:
php app/console doctrine:mapping:convert metadata_format \
./src/App/MyBundle/Resources/config/doctrine \
--from-database \
--filter="Yourtablename"
然后
其中metadata\u format
是要生成的文件结尾(例如xml、yml、注释)
最后
php app/console doctrine:generate:entities AppMyBundle --no-backup
像这样的原则只会加载你需要的实体。只要小心过滤器,你必须使用CamelCase
希望这将帮助您对于第三个命令,doctrine将继续重新生成所有实体文件。通过在bundle之后添加实体名称,它只生成我感兴趣的实体
php app/console doctrine:generate:entities AppMyBundle:Yourtablename --no-backup
@fyrye目前隐藏的评论值得赞扬,他想补充这一点,这样其他人就不会错过。这是一种方法:
/** @var \Doctrine\DBAL\Connection $connection */
$config = $connection->getConfiguration();
// for excluding an specific table
$config->setFilterSchemaAssetsExpression('/^(table_to_reverse_engineer_1|table_to_reverse_engineer_2).*$/');
来源:
我在运行以下命令时遇到问题,因为有大量定义不正确的旧表
php ./vendor/bin/doctrine orm:convert-mapping --force --from-database annotation ./src/UI/Entity/
事实证明--filter标志仅在从所有表中读取元数据后进行过滤,如果这些表没有主键或存在其他问题,将导致命令失败Symfony 2.7选项注释和[/xml/yml]的简单工作解决方案请参阅 分3步执行3个命令:
$ php app/console doctrine:mapping:import --force AppBundle xml --filter="Meeting"
(注意:如果您的数据库名称是my_meeting
,您需要在filter=“MyMeeting”
中将其更改为MyMeeting
,以便条令查找您的表名。这是因为条令将始终删除下划线并在表名中添加驼峰大小写。如果不是,您将得到以下错误:“数据库没有任何映射信息”。)
(注意:确保在Meeting.php类文件中有名称空间AppBundle\Entity;
如下所示:
<?php
/**
* Created by PhpStorm.
* User:
* Date: 03-Sep-2015
* Time: 3:23 PM
*/
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
我在Symfony 2.4和MySQL上遇到了完全相同的问题
上面贴出的解决办法都不适合我
我最终创建了一个新的数据库,其中包含了我想要提取的表(这很容易做到,因为MySQL提供了创建脚本)
然后更改与新数据库的连接,并从那里执行实体提取命令
看起来有点激进,但我不会手工创建实体
希望这对我有所帮助,我会把这个作为对公认答案的评论,但我是个新手
对于像我这样在--filter开关映射多个名称中有重合字符串的表时遇到问题的人,可以使用一种模式
表名称示例:
卖主
卖方合同
php app/console doctrine:mapping:convert metadata_format \
./src/App/MyBundle/Resources/config/doctrine \
--from-database \
--filter="Vendor"
该命令将转换两个表,而不仅仅是供应商。如果只需要供应商而不需要供应商联系人,请使用--filter:
希望这对某人有帮助!使用Symfony 3时,没有一个答案对我非常合适。我最终做了:
php bin/console doctrine:mapping:import --force MyBundle xml --filter="MyTable"
php bin/console doctrine:mapping:convert annotation ./src --filter="MyTable"
php bin/console doctrine:generate:entities MyBundle:MyTable --path ./src
与Symfony 3配合也很好
如果您收到“无需处理的元数据类”消息,请尝试将您的表名转换为筛选器参数中的大小写
“my_table_name”需要写为“MyTableName”。对于我的symfony 3.3,这些都不起作用。因此,我只是创建了一个目录副本,并重新生成了副本目录中的所有实体。然后,我在原始目录中复制了所需的实体
--由于此问题,Symfony 3的过滤器无法工作
为新“组”表生成实体的步骤
php bin/console原则:映射:导入“App\Entity”注释--path=src/AppBundle/Entity--过滤器组
如中所述--过滤器使用实体名称,而不是表名称!
php bin/console原则:映射:导入“App\Entity”注释--path=config/document--filter=“YourEntity”我很高兴,我在这个问题上遇到了一些不好的时候。小心过滤器它是非常“合理”的,就像如果你设置
--filter=“mytable”
原则将接受所有以“mytable”开头的表,而不仅仅是名为mytable“(也有这个问题)。@Coussinsky这很有效,但我有一个小问题:--filter=mytable不起作用。如果我删除该选项,我将获得数据库中的所有表,如果我添加该选项:“没有要处理的元数据类”。你的想法?你忘记了“你必须这样写:--filter=“mytable”什么是你想要什么?
?如果数据库包含没有主键的表,即使您的筛选器包含有主键的表,这似乎不起作用。有什么想法吗?它应该包含在顶部答案中,因为该原则重新生成了我的所有~300个实体。实际上,如果我使用此命令,我有名称pace“VENDOR\MyBundle\Entity\TableName”不包含任何映射实体。
,如果我使用完整的原则:generate:entities
它会重新生成除新实体以外的所有实体…我做错了什么?!这对我也不起作用。它会从我的所有捆绑包生成实体。“无法打开输入文件:app/console”@Dennis确保您位于项目的根目录中。执行ls/dir命令时,应该有一个“app”目录。您在哪里添加setfilterschemaassetexpression()
call?你是在修改核心Symfony文件还是条令文件?好问题,我真的记不起来了!我想,/vendor/bin/doctor文件使用了一个引导文件或一个叫做cli-config.php的文件-参见Symfony2.3+中的@mhouse,编辑你的app/config/config.yml
以包含schema_过滤器
选项,该选项调用setFilterschemaAsetExpression
请参阅:doctrine:dbal:connections:user_db:schema_过滤器:/^(
php app/console doctrine:mapping:convert metadata_format \
./src/App/MyBundle/Resources/config/doctrine \
--from-database \
--filter="Vendor"
php app/console doctrine:mapping:convert metadata_format \
./src/App/MyBundle/Resources/config/doctrine \
--from-database \
--filter="\bVendor\b"
php bin/console doctrine:mapping:import --force MyBundle xml --filter="MyTable"
php bin/console doctrine:mapping:convert annotation ./src --filter="MyTable"
php bin/console doctrine:generate:entities MyBundle:MyTable --path ./src