如何在Symfony2中使用doctrine更新数据库

时间:2015-09-12 15:38:02

标签: symfony doctrine

我使用实体生成器制作实体,但现在当我尝试命令时:

php app/console doctrine:schema:update --force

它抛出以下内容:

No Metadata Classes to process.

那么,我做错了什么?

PS。我也尝试自己编写并使用以下命令:

php app/console doctrine:generate:entities AppBundle/Entity/DataPage

我看到了这个错误:

[Doctrine\ORM\Mapping] \MappingException]  Class "AppBundle\Entity\DataPage" is not a valid entity or mapped super class.    

所以有代码:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* DataPage
*/
class DataPage
{
  /**
   * @var integer
   */
  private $id;

  /**
   * @var string
   */
  private $sisalto;

  /**
   * @var string
   */
  private $nimi;

}

修改 所以,我尝试为there的示例代码制作此代码 我也看到了同样的错误:

[Doctrine\ORM\Mapping \MappingException]                                      
Class "AppBundle\Entity\Product" is not a valid entity or mapped superclass.     

2 个答案:

答案 0 :(得分:0)

/**
* DataPage
*/
class DataPage
[...]

应该是

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="data_page")
 */
 [...]

这只是第一步,而不是必须注释要在db上显示的实体的每个字段。
请看一下here

答案 1 :(得分:0)

我不确定这是否有助于其他任何人,但我收到了以下错误的symfony Doctrine产品示例代码:

[Doctrine\ORM\Mapping\MappingException]
Class "AppBundle\Entity\Product" is not a valid entity or mapped super class.

然后我再看一下我的评论部分,这是一个丢失的星号,如下面的代码示例[以下是错误的]:

/*
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product

在第1行注意,最后应该有一个额外的'*'。我绝对不认为这根本不重要,但显然确实如此。另外,请勿在注释前使用制表符。 Doctrine小组也解决了这个问题。