Php 如何设置symfony2中的主键变量

Php 如何设置symfony2中的主键变量,php,mysql,symfony,Php,Mysql,Symfony,我想用用户名和密码实例化一个用户 用户名是数据库中的主键 我在symfony2中有以下代码: $username = $request->get('username'); $email = $request->get('email'); $password = $request->get('password'); $user = new User(); $u

我想用用户名和密码实例化一个用户

用户名是数据库中的主键

我在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 
似乎我不能调用username上的setter,因为这是主键,但是我如何才能给变量一个值呢?可能在构造函数中,但在symfony2中如何工作?

如何在实体中定义用户名,并将其定义为表列?mysql错误告诉我们,字段“userName”没有默认值,并且条令不会尝试设置查询中显示的值。实体属性是否映射为,如果存在@GeneratedValue,是否为其指定了适当的属性? 引用文档中有关生成策略的内容:

无:告诉条令标识符已分配,因此 由您的代码生成。任务必须在新任务之前完成 实体被传递给EntityManagerpersist。没有一件事和离开是一样的 完全关闭@GeneratedValue


可能就是这样。但如果不看实体定义,就很难判断。

/***@var string*/private$username;公共函数getUsername{return$this->username;}公共函数setUsername$username{$this->username=$username;}这就是你的意思吗?