我有一個用戶對象,我試圖通過Doctrine插入。爲@ID字段插入null的學說
的關鍵領域是
/**
* @ORM\Column(type="integer", name="id")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $userId;
/**
* @ORM\Id
* @ORM\Column(type="string", name="login_name")
*/
private $loginName;
/**
* @ORM\Column(type="string", name="display_name")
*/
private $name;
以我控制器代碼我可以通過在物體上的getLoginName()方法回聲出$ LOGINNAME字段的值。
/**
* @param mixed $loginName
*/
public function setLoginName($loginName)
{
$this->loginName = $loginName;
}
/**
* @return mixed
*/
public function getLoginName()
{
return $this->loginName;
}
您可以看到Controller代碼在此處執行插入操作。
if ($request->getMethod() == 'POST') {
$form->bind($request);
$login = $form->getData();
$factory = $this->get('security.encoder_factory');
echo($login->getLoginName());
$encoder = $factory->getEncoder($login);
$login->setPassword($encoder->encodePassword($login->getPassword(), $login->getSalt()));
$em = $this->getDoctrine()->getManager();
$em->persist($login);
$em->flush();
$this->get('session')->setFlash(
'success',
'Account Successfully Created'
);
但是,當我調用堅持和刷新我的實體時,登錄名字段正在''放入它(空白空間)。我無法理解爲什麼價值被取消(我將數據庫設置更改爲錯誤,因爲它是非唯一的)。
有這種類的關聯,但這是主要的,所以我首先創建它。
任何想法?
爲什麼你不註釋$ userId作爲@Id? –
因爲這是從Mysql Table自動生成的ID。在symfony中使用內置的auth框架,似乎我不得不使用登錄憑證作爲ID。但是這與爲什麼它有一個有值的ID字段並且它插入了空值並不相關 – jesmith17
這不是真的。看看FOSUSerbundle,用戶也有一個ID字段,其中一個是@ID。 – m0c