【发布时间】:2012-12-12 16:20:35
【问题描述】:
几分钟前我发现 Doctrine2 中有一个错误。
我在我的实体中添加了一些字段,然后刷新了 mysql 表并打算持久化之前我注意到新数据没有存储在表中。
尝试了var_dump“->getXXX()”的值,结果是正确的。
这里是使用的代码:
$user->setName($name);
$user->setSurname($surname);
if($country)
$user->setCountry($country->getId());
//New code
if($province > 0)
$user->setProvince($province);
if($town > 0)
$user->setTown($town);
var_dump($user->getProvince(), $user->getTown()); //Works OK
$em->persist($user); // Only persists values before Province.
$em->flush();
感谢和问候!
已编辑
关于我的实体的信息:
class Users
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=50)
*/
private $name;
/**
* @var string $surname
*
* @ORM\Column(name="surname", type="string", length=95)
*/
private $surname;
/**
* @var string $mail
*
* @ORM\Column(name="mail", type="string", length=80, unique=true)
*/
private $mail;
/**
* @var string $password
*
* @ORM\Column(name="password", type="string", length=255)
*/
private $password;
/**
* @var $country
*
* @ORM\Column(name="country", type="integer")
*/
private $country;
/**
* @var $province
*
* @ORM\Column(name="province", type="integer")
*/
private $province;
/**
* @var $town
*
* @ORM\Column(name="town", type="integer")
*/
private $town;
}
国家、省和镇是来自同名表的 ID。我尝试使用 ManytoOne 关联更改字段的类型,但它让我在 Doctrine2 生成的 SQL 上出错。好像是缓存错误,但是我解决不了。
【问题讨论】:
-
您是否尝试清除缓存?
-
你能展示实体的 Doctrine 配置(注解、yml 等)吗?您确定为新字段设置了正确的“ORM/列”吗?
-
使用控制台清除元数据缓存是不够的。在开发中,您可以使用 VoidCache 禁用缓存。这对我有帮助
标签: php symfony doctrine-orm persist