我的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
注释。
这也会导致不添加/更新实体。