Doctrine2生成带有setter和getter的实体

时间:2014-07-13 00:48:28

标签: php symfony orm doctrine-orm

我已根据本文成功安装并使用了原则:Getting started with Doctrine

现在我想对现有数据库进行逆向工程。我尝试运行以下命令:

php vendor/doctrine/orm/bin/doctrine orm:convert-mapping --from-database annotation entity/generated

并生成具有正确注释的实体文件。但是,我想生成setter和getter而不是自己编写代码。

很多人都在提到这篇文章:How to generate Entities from an Existing Database。文章中的第一个命令是:

php app/console doctrine:mapping:import --force AcmeBlogBundle xml

我找不到安装Symfony和Doctrine的app文件夹和控制台文件。我的composer.json文件内容是:

{
    "require": {
        "doctrine/orm": "2.4.*",
        "symfony/yaml": "2.*"
    },
    "autoload": {
        "psr-0": {"": "src/"}
    }
}

我从Doctrine入门文章中得到了这个。我在composer.json文件中缺少依赖项吗?我在哪里可以找到app / console?

编辑1:

Paul Andrieux,我添加了#34; symfony / framework-standard-edition":" 2.5。*"到我的composer.json文件。现在我有一个文件夹供应商/框架标准版。这包含一个包含控制台文件的app文件夹。但是,我收到一个错误,因为" console"脚本正在尝试" require_once DIR 。' /bootstrap.php.cache'"并且bootstrap.php.cache不存在。该文件应包含什么内容?我需要自己创建吗?创建或获取此文件后,我应该采取哪些其他步骤?

2 个答案:

答案 0 :(得分:1)

我找到了生成Getter& amp; Setters只使用Doctrine ORM。

你应该使用orm:convert-mapping生成XML映射文件然后使用orm:generate-entities生成XML到PHP类

orm:convert-mapping [--filter FILTER] [-f|--force] [--from-database] [--extend [EXTEND]] [--num-spaces [NUM-SPACES]] [--namespace [NAMESPACE]] [--] <to-type> <dest-path>
orm:generate-entities [--filter FILTER] [--generate-annotations [GENERATE-ANNOTATIONS]] [--generate-methods [GENERATE-METHODS]] [--regenerate-entities [REGENERATE-ENTITIES]] [--update-entities [UPDATE-ENTITIES]] [--extend EXTEND] [--num-spaces NUM-SPACES] [--no-backup] [--] <dest-path>

一个。我composer.json(我使用的是学说2.5。*)

...
"require": {
    "doctrine/orm": "^2.5"
},
...

B中。配置cli工具

我的cli-config.php

注意:使用方法createXMLMetadataConfiguration NOT createAnnotationMetadataConfiguration

<?php
$db = [
    // ...
];
$paths = [ __DIR__ . '/../Model/'];

// this place should use function Setup::createXMLMetadataConfiguration
$config = \Doctrine\ORM\Tools\Setup::createXMLMetadataConfiguration($paths, false);
$entityManager = \Doctrine\ORM\EntityManager::create($db, $config);
return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager);

℃。生成XML

php vendor/bin/doctrine orm:convert-mapping -f --namespace='Model\' --from-database xml app/Model
在文件app/Model中设置

路径paths必须与cli-config.php匹配

d。生成PHP类

php vendor/bin/doctrine orm:generate-entities --generate-annotations="true"  app/

这将为您想要的内容生成正确的内容和正确的命名空间

答案 1 :(得分:0)

根据你的composer.json文件,你没有安装symfony2,只有它的yaml组件。

如果您想安装symfony2完整堆栈,请按照本指南进行操作:http://symfony.com/get-started