我有一个问题,我有一个表(下载),有两个字段:令牌(主键)和值。
我的实体下载使用这些方法(仅显示令牌方法,值正常工作):
/**
* @var string
*
* @ORM\Column(name="token", type="string", length=45, nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $token;
/**
* Set token
*
* @param string $token
* @return Downloads
*/
public function setToken($token)
{
$this->token = $token;
return $this;
}
/**
* Get token
*
* @return string
*/
public function getToken()
{
return $this->token;
}
但是,当我在我的控制器中执行此操作时:
$em = $this->getDoctrine()->getManager();
$Download = new Downloads();
$Download->setToken($token);
$Download->setValid($now);
$em->persist($Download);
$em->flush();
对象创建得很好,但在我的数据库中有效存储正确,而令牌存储为空!!
如果我看到值,util $ em-> flush();对象下载有两个正确的值,但在此之后,令牌(主键)消失了他的值。
我该怎么办?
答案 0 :(得分:1)
尝试删除@ORM \ GeneratedValue (strategy =“IDENTITY”)因为它是导致doctrine为Token生成值的那个。 希望它有所帮助:)
答案 1 :(得分:0)
你必须像这样为你的列创建自动增量
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
答案 2 :(得分:0)
愚蠢的回答,但你试过了吗?
它可能与Doctrine缓存有关。