这可能是一个新手问题,在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;
}
}
所以它也生成了注释,但我仍然无法生成我的数据库模式:(
以下原始问题已过时 我必须手动输入注释的原因是什么?
答案 0 :(得分:0)
好的,我想你很想知道如何使用Doctriine创建数据库。
实体类(在src/AppBundle/Entity/
中)定义了映射 tables 的实体。
这个类有属性(又名变量),它们代表列(或关联)。必须对此属性进行注释,以便doctrine知道要创建的列类型。
现在可以使用以下命令完全手动构建这些类或:
php app/console generate:doctrine:entity
但你必须明白这只是一个捷径 - 你仍然有责任维护和开发架构。
所以回答你的问题:
我必须手动输入注释的原因是什么?
因为学说无法知道您想要保存哪种数据 - 注释是你解释到学说(和symfony)所需要的一种方式。< / p>
不要忘记运行doctrine:schema:create
来实际创建实体中描述的表格。
答案 1 :(得分:0)
哦,我发现了问题。
使用交互式手册我忽略了选项&#39;注释。那是我犯的第一个错误。
我犯的第二个错误是我在AppBundle的构建中创建了实体。当我创建自己的Bundle时,它完美无瑕:)