2013-12-18 24 views
0

我有一個問題,我有一個表(下載)有兩個字段:令牌(主鍵)和值。Symfony:我無法存儲主鍵值

我有我的實體下載使用這些方法(只顯示標記的方法,價值工程右):

/** 
* @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

你必須爲你列這樣

/** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
+0

謝謝,但這是行不通的。我有其他表都沒有自動增量字段,並正常工作。 – user2794692

0

愚蠢的答案創建自動遞增,但你嘗試過:

  • 清除您的Symfony緩存
  • 重新啓動Apache的

它可能與Doctrine緩存有關。

+0

是的,謝謝,但這不是問題。我不知道是否有任何創建表... – user2794692

1

嘗試刪除@ORM \ GeneratedValue (strategy =「IDENTITY」),因爲它是導致學說爲Token生成值的那個。 希望它可以幫助:)