如何在symfony2中设置作为主键的变量

时间:2014-10-25 14:08:02

标签: php mysql symfony

我想用用户名和密码实例化用户。

用户名是数据库中的主键。

我在symfony2中有以下代码:

            $username = $request->get('username');
            $email = $request->get('email');
            $password = $request->get('password');

            $user = new User();
            $user->setEmail($email);
            $user->setPassword(sha1($password));
            $user->setUsername($username);

            $em = $this->getDoctrine()->getEntityManager();
            $em->persist($user);
            $em->flush();

我收到以下错误:

An exception occurred while executing 'INSERT INTO user (email, password, money) VALUES (?, ?, ?)' with params ["testtttt@test.com", "61a9757ca7e9a5655e2d261298a04c983515b5b6", 1000000]:

SQLSTATE[HY000]: General error: 1364 Field 'userName' doesn't have a default value 

似乎我无法在用户名上调用setter,因为这是主键,但是如何为变量赋值呢?可能在构造函数中,但这在symfony2中是如何工作的?

1 个答案:

答案 0 :(得分:0)

如何在实体中定义userName,以及作为表格列? mysql错误告诉我," Field' userName'没有默认值",并且Doctrine没有尝试设置查询中显示的值。实体属性是否映射为identifier,如果它存在,您是否正在为@GeneratedValue分配正确的generation strategy
关于发电战略的文献引用:

  

NONE:告诉Doctrine标识符被分配(因此   由您的代码生成)。作业必须在新作业之前进行   实体传递给EntityManager#persist。没有和离开一样   完全关闭@GeneratedValue。

可能是这种情况。但是如果不看实体定义就很难说清楚。