2011-09-03 33 views
0

SQLSTATE [23000]:完整性約束衝突:爲什麼我的插入失敗使用Doctrine 2?

我已經確認並驗證所有3個輸入參數是不是空的1048列「用戶名」不能爲空!

function insert_user($username,$email,$password) 
     { 
$user = new User(); 
$user->setUsername = $username; 
$user->setEmail = $email; 
$user->setPassword = $password; 

    try { 
      //save to database 
      $this->em->persist($user); 
      $this->em->flush(); 
     } 
     catch(Exception $err){ 

      die($err->getMessage()); 
     } 
     return true; 
     } 

數據庫模式

CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varchar(300) COLLATE utf8_unicode_ci NOT NULL, 
    `email` varchar(300) COLLATE utf8_unicode_ci NOT NULL, 
    `password` varchar(300) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
/*!40101 SET [email protected]_COLLATION_CONNECTION */; 

實體類

<?php 



use Doctrine\ORM\Mapping as ORM; 

/** 
* User 
* 
* @Table(name="user") 
* @Entity 
*/ 
class User 
{ 
    /** 
    * @var integer $id 
    * 
    * @Column(name="id", type="integer", nullable=false) 
    * @Id 
    * @GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string $username 
    * 
    * @Column(name="username", type="string", length=300, nullable=false) 
    */ 
    private $username; 

    /** 
    * @var string $email 
    * 
    * @Column(name="email", type="string", length=300, nullable=false) 
    */ 
    private $email; 

    /** 
    * @var string $password 
    * 
    * @Column(name="password", type="string", length=300, nullable=false) 
    */ 
    private $password; 


    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set username 
    * 
    * @param string $username 
    */ 
    public function setUsername($username) 
    { 
     $this->username = $username; 
    } 

    /** 
    * Get username 
    * 
    * @return string 
    */ 
    public function getUsername() 
    { 
     return $this->username; 
    } 

    /** 
    * Set email 
    * 
    * @param string $email 
    */ 
    public function setEmail($email) 
    { 
     $this->email = $email; 
    } 

    /** 
    * Get email 
    * 
    * @return string 
    */ 
    public function getEmail() 
    { 
     return $this->email; 
    } 

    /** 
    * Set password 
    * 
    * @param string $password 
    */ 
    public function setPassword($password) 
    { 
     $this->password = $password; 
    } 

    /** 
    * Get password 
    * 
    * @return string 
    */ 
    public function getPassword() 
    { 
     return $this->password; 
    } 
} 

回答

1

你真的有名稱,如setUsername性能(公共)?或者你的意思是調用方法setUsername($username)

$user->setUsername($username); 
$user->setEmail($email); 
$user->setPassword($password); 

記住,要得到幫助最好的方式與原則2也發佈實體類定義

+0

我增加了實體類 – jini

+0

拍我想我搞砸了,因爲我想調用的方法:S – jini

相關問題