Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用symfony2和条令从现有数据库生成单个实体_Php_Database_Symfony_Doctrine - Fatal编程技术网

Php 使用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

是否可以使用Symfony2控制台工具从数据库生成单个实体

在编码过程中,我不得不添加一个表,并对现有的实体类进行了修改。所以我不想让我所有的实体再生


如有任何建议,将不胜感激

我也有同样的问题,你必须这样做:

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