繁体   English   中英

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

[英]How to set a variable that is a primary key in symfony2

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

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

我在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中如何工作?

是怎么userName在实体定义,并为表列? mysql错误表明“字段'userName'没有默认值”,并且Doctrine不会尝试设置查询中看到的值。 实体属性是否映射为标识符 ,并且是否为@GeneratedValue分配了适当的生成策略 (如果存在)?
文档中有关生成策略的报价:

无:告诉Doctrine标识符由您的代码分配(并由此生成)。 分配必须在将新实体传递给EntityManager#persist之前进行。 NONE与完全放弃@GeneratedValue相同。

可能是这样。 但是,不看实体定义就很难分辨。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM