没有为创建的实体

时间:2016-03-19 16:31:15

标签: php symfony doctrine-orm annotations

这可能是一个新手问题,在Symfony的文档中我找不到它。我根据文档安装了Symfony,并使用'database& amp;学说'手册。之后我使用学说创建了一个实体。当我这样做时,我注意到没有创建的注释。作为bundle我使用AppBundle,它也在我的AppKernel中:

$bundles = [
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        new Symfony\Bundle\SecurityBundle\SecurityBundle(),
        new Symfony\Bundle\TwigBundle\TwigBundle(),
        new Symfony\Bundle\MonologBundle\MonologBundle(),
        new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
        new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        new Symfony\Bundle\AsseticBundle\AsseticBundle(),
        new AppBundle\AppBundle(),
    ];

更新: 使用命令php bin/console doctrine:generate:entity我使用注释(而不是yml,php或xml)创建了Entity Foo,结果是:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Foo
 *
 * @ORM\Table(name="foo")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\FooRepository")
 */
class Foo
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="bar", type="string", length=35)
     */
    private $bar;


    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set bar
     *
     * @param string $bar
     *
     * @return Foo
     */
    public function setBar($bar)
    {
        $this->bar = $bar;

        return $this;
    }

    /**
     * Get bar
     *
     * @return string
     */
    public function getBar()
    {
        return $this->bar;
    }
}

所以它也生成了注释,但我仍然无法生成我的数据库模式:(

以下原始问题已过时 我必须手动输入注释的原因是什么?

2 个答案:

答案 0 :(得分:0)

好的,我想你很想知道如何使用Doctriine创建数据库。

实体类(在src/AppBundle/Entity/中)定义了映射 tables 的实体。

这个类有属性(又名变量),它们代表列(或关联)。必须对此属性进行注释,以便doctrine知道要创建的列类型。

现在可以使用以下命令完全手动构建这些类

php app/console generate:doctrine:entity

但你必须明白这只是一个捷径 - 你仍然有责任维护和开发架构。

所以回答你的问题:

  

我必须手动输入注释的原因是什么?

因为学说无法知道您想要保存哪种数据 - 注释是解释到学说(和symfony)所需要的一种方式。< / p>

不要忘记运行doctrine:schema:create来实际创建实体中描述的表格。

答案 1 :(得分:0)

哦,我发现了问题。

使用交互式手册我忽略了选项&#39;注释。那是我犯的第一个错误。

我犯的第二个错误是我在AppBundle的构建中创建了实体。当我创建自己的Bundle时,它完美无瑕:)