【问题标题】:How to generate Doctrine entities From Database and Use PSR-4 Autoloading?如何从数据库生成 Doctrine 实体并使用 PSR-4 自动加载?
【发布时间】:2017-11-14 04:51:44
【问题描述】:

使用 Doctrine 2.5 和 PSR-4 自动加载并将已设计的数据库模式转换为实体类(注释)。问题是在正确的目录结构中获取导出的文件。

composer.json

{
    "autoload": {
        "psr-4": {
            "Application\\": "src/"
        }
    },
    "require": {
        "doctrine/orm": "^2.5"
    }
}

orm:convert-mapping

vendor/bin/doctrine orm:convert-mapping \
    --namespace='Application\Entity\' \
    --force \
    --from-database  \
    annotation \
    src/

运行此命令将在src/ 中添加一个Application 目录。 生成的类文件具有正确的命名空间,但在 PSR-4 标准的错误目录中。

<?php

namespace Application\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class User
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;


}

有没有办法在没有辅助命令的情况下解决这个问题?

【问题讨论】:

    标签: php doctrine-orm psr-4


    【解决方案1】:

    我没有看到 doctrine cli 提供的任何选项来满足此需求。我只是看到了从您的应用程序模块修改目录结构的解决方案。这里我修改composer.json

    {
        "autoload": {
            "psr-4": {
                "Application\\": "src/Application/"
            }
        },
        "require": {
            "doctrine/orm": "^2.5"
        }
    }
    

    所有Application 模块源代码都将放在src/Application 而不是src/ 上。所以,当doctrine clisrc 中创建目录Application/Entity 时,它将与你的psr-4 Autoloader 匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-08
      • 2015-04-20
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2014-04-07
      • 2023-01-31
      • 2014-07-25
      相关资源
      最近更新 更多