Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 从数据库生成实体_Php_Mysql_Symfony_Doctrine - Fatal编程技术网

Php 从数据库生成实体

Php 从数据库生成实体,php,mysql,symfony,doctrine,Php,Mysql,Symfony,Doctrine,我正在尝试从现有的空数据库(相当大,从头开始创建实体会非常痛苦)中生成symfony2中的实体。不幸的是,我遇到了相当大的问题 当我尝试调用以下命令时(在windows上,如果它更改了任何内容): 我得到以下信息: 没有要处理的元数据类 在发布之前,我已经: 验证我的配置是否正常(我可以连接到数据库) 我的捆绑包已创建,上面指定的路径有效 当我尝试转换为xml/yml时,会发生与生成注释映射时相同的事情 Symfony版本是2.4.4,php版本是5.5.3 提前感谢您的帮助:) 回复后编辑

我正在尝试从现有的空数据库(相当大,从头开始创建实体会非常痛苦)中生成symfony2中的实体。不幸的是,我遇到了相当大的问题

当我尝试调用以下命令时(在windows上,如果它更改了任何内容):

我得到以下信息:

没有要处理的元数据类

在发布之前,我已经:

  • 验证我的配置是否正常(我可以连接到数据库)
  • 我的捆绑包已创建,上面指定的路径有效
  • 当我尝试转换为xml/yml时,会发生与生成注释映射时相同的事情
Symfony版本是2.4.4,php版本是5.5.3

提前感谢您的帮助:)

回复后编辑

当我尝试使用

php app/console doctrine:mapping:import --force GOBundle xml
根据@xiidea的建议,我得到了以下信息:

数据库没有任何映射信息


您的案例在symfony名为

如文件所述:

从现有对象构建实体类的第一步 数据库是要求条令对数据库进行反思并生成的 相应的元数据文件。元数据文件描述实体 基于表字段生成的类

使用以下命令(假设捆绑包的短名称为GOutsideGOBundle

$php应用程序/控制台原则:映射:导入——强制GOutsideGOBundle xml

那你需要打电话

php应用程序/控制台原则:生成:实体GOutsideGOBundle

如果需要生成带有注释映射的实体类,则必须在
原则之前执行以下命令:generate:entities

php应用程序/控制台原则:映射:转换注释。/src

路径应仅为/src而不是/src/GOutside/GOBundle/Resources/config/doctrine

更新: 如果配置中的所有内容都正确,则获取错误
数据库没有任何映射信息。
不太可能!!我不确定这个错误。但根据您的数据库表模式,存在一些问题将阻止您创建映射信息

  • 您的表包含特殊类型的,该点条令无法处理
  • 数据库表有多个没有主键的表原则不支持从没有主键的表进行反向工程
  • 要解决问题(1),您可以在条令配置部分中添加一个。例如,要将点类型映射为字符串,可以编写:

    doctrine:
        dbal:
            //Other connection parameters
            mapping_types:
                point: string
    
    对于第二个问题,您需要为这些表定义主键,它们可以是新字段,也可以是复合主键。

    我遇到了这个错误

    Database does not have any mapping information.
    
    在我的例子中,这是因为我有两个表的名称如下:

  • mockstore_类别
  • mockstore_产品
  • 当我尝试使用此命令时:

    sudo php app/console doctrine:mapping:import --filter="MockstoreProduct" --force MockizartStoreBundle yml
    
    错误
    数据库没有任何映射信息。
    出现。但当我使用它生成
    --filter=“MockstoreCategory”
    时,它没有

    因此,要为
    mockstore\u product
    表生成映射,它应该是:

    php app/console doctrine:mapping:import --filter="Product" --force MockizartStoreBundle yml
    
    --filter=“Product”
    不是
    --filter=“MockstoreProduct”


    希望有帮助。

    也有同样的问题,结果是缓存:

    console c:c
    

    解决了问题。

    在我的案例中,问题在于对数据库表的访问权限。 用户凭据正确,但此用户没有读取表的权限。 您可以执行类似这样的操作来检查
    php bin/console原则:query:sql“SELECT*fromYourTable”

    似乎我错过了导入步骤,但遗憾的是,这样做不行,获取
    数据库没有任何映射信息。
    如果我尝试执行原则:映射:导入,则显示消息。@Długi:据我记忆所及
    数据库没有任何映射信息。
    在没有表时显示。你能检查一下你的数据库配置吗?这些配置是否正确?特别是
    数据库名称
    。如果您的信息是正确的,您可以共享一个或两个表模式吗?这是基本的mysql配置,所以不用动脑筋(无密码、localhost等),但这里是表导出-希望这能有所帮助@杜吉:如果你说的都是事实,我不知道你为什么会犯这样的错误!!。但是根据您的表模式,它不应该工作,原因有几个:1。您的表包含条令无法处理的特殊类型
    。2.您的数据库表有多个没有任何primarykey的表<代码>原则不支持对没有主键的表进行反向工程这个答案给了我一个有用的提示,谢谢。我尝试了
    --filter=“calendar”
    ,但它只适用于大写名称,如
    --filter=“calendar”
    。当提到案例问题时,我对这个答案投了一票。谢谢
    console c:c