如何从数据库生成Doctrine实体并使用PSR-4自动加载?

时间:2017-06-12 16:11:38

标签: php doctrine-orm psr-4

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

composer.json

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

ORM:转换映射

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

运行此命令将在Application中添加src/目录。 生成的类文件具有正确的命名空间,但在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;


}

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

1 个答案:

答案 0 :(得分:1)

我没有看到来自doctrine cli的任何选项。我只是看到了从Application模块修改目录结构的解决方案。在这里,我修改了composer.json

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

所有Application模块源代码将再次置于src/Application而不是src/。因此,当doctrine cliApplication/Entity中创建目录src时,它将与yor psr-4 Autoloader匹配。