教义实体(Symfony 2.6标准)中添加的列不被教义识别



我的symfony2应用程序中有一个实体,其中包含多个属性。 它实现了 JSONserializable,因为实体上的所有工作都是在 javascript 端完成的,并且我定义了一个魔术 setter 函数,因此我可以遍历从客户端获取的 JSON 并一次设置我的所有属性。

类定义:

   /**
   *@ORMEntity
   *@ORMTable(name="creature")
   */
    class Creature implements JsonSerializable {

以及非典型函数定义:

public function __set($name, $value) {
    $this->$name = $value;
    return $this;
}
public function jsonSerialize() {
  $json = array();
  foreach($this as $key => $value) {
    if($key != "attacks") {
      $json[$key] = $value;
    } else {
      $json[$key] = array();
      for($x = 0; $x < count($this->attacks); $x++) {
        $json[$key][$x] = array();
        $json[$key][$x]["attack"] = $this->attacks[$x]->getName();
        $json[$key][$x]["bonus"] = $this->attacks[$x]->getBonus();
        $json[$key][$x]["damage"] = $this->attacks[$x]->getDamage();
      }
    }
  }
  return $json;
}

在大多数情况下,这个实体运作良好。 除了在我继续前进时,我发现我需要再添加 3 列。 因此,很自然地,我将其添加到我的实体类中:

  /**
   *ORMColumn(type="integer", nullable=true)
   */
  protected $experience;
  /**
   *ORMColumn(type="integer", nullable=true)
   */
  protected $cr;
  /**
   *ORMColumn(type="integer", nullable=true)
   */
  protected $proficiencybonus;

并试图运行

php app/console generate:doctrine:entities AppBundle
php app/console doctrine:schema:update --force

除了两个命令都无法识别我进行了任何更改。 我尝试清除缓存(dev 和 prod)并从实体中删除我的自定义代码,但它仍然不会添加我的三个新列。 我的下一个想法是完全重置我的数据库,但如果能帮助它,我并不热衷于这样做。

有人有什么想法吗?

看起来您忘记了注释中的@

/**
 *@ORMColumn(type="integer", nullable=true)
 */
protected $experience;
/**
 *@ORMColumn(type="integer", nullable=true)
 */
protected $cr;
/**
 *@ORMColumn(type="integer", nullable=true)
 */
protected $proficiencybonus;

我遇到了类似的问题,我忘了添加: *@ORMEntity注释。

这也会导致不添加/更新实体。

相关内容

  • 没有找到相关文章

最新更新