php – Doctrine2不会保留某些字段
几分钟前,我在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 * * @ORMColumn(name="id",type="bigint") * @ORMId * @ORMGeneratedValue(strategy="AUTO") */ private $id; /** * @var string $name * * @ORMColumn(name="name",type="string",length=50) */ private $name; /** * @var string $surname * * @ORMColumn(name="surname",length=95) */ private $surname; /** * @var string $mail * * @ORMColumn(name="mail",length=80,unique=true) */ private $mail; /** * @var string $password * * @ORMColumn(name="password",length=255) */ private $password; /** * @var $country * * @ORMColumn(name="country",type="integer") */ private $country; /** * @var $province * * @ORMColumn(name="province",type="integer") */ private $province; /** * @var $town * * @ORMColumn(name="town",type="integer") */ private $town; } 国家,省和城镇是来自同名表的id.我试图用ManytoOne协议改变字段的类型,但它在Doctrine2生成的SQL上得到了一个错误.它似乎是一个缓存错误,但我无法解决它. 解决方法
关于Doctrine协会如何运作,您需要学习很多东西.我建议花一些时间,真正阅读
Doctrine mapping documentation.
您的用户实体不应该使用这样的整数.你可能想要一个ManyToOne关系(意思是:每个用户可以只有一个国家和一个省).您应该开始将事物视为对象并尽量不要传递ID 例如: /** * @ORMManyToOne(targetEntity="Country") * @ORMJoinColumn(name="countryId",referencedColumnName="id") */ private $country; /** * @ORMManyToOne(targetEntity="Province") * @ORMJoinColumn(name="provinceId",referencedColumnName="id") */ private $province; 每个中的targetEntity应该更改为您调用的实体. 如果您尝试进行这些更改,请确保运行app / console doctrine:schema:update命令以自动更新架构. 然后你可以在你的控制器中执行此操作: $country = new Country('US'); $entityManager->persist($country); $user->setCountry($country); 注意:我没有将国家ID分配给setCountry()方法.我传入了实际的Country对象.这只是一个示例,在您的实际控制器中,此处的$country变量将通过表单传递或从数据库中提取等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |