我想用用户名和密码实例化用户。
用户名是数据库中的主键。
我在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中是如何工作的?
答案 0 :(得分:0)
如何在实体中定义userName
,以及作为表格列? mysql错误告诉我," Field' userName'没有默认值",并且Doctrine没有尝试设置查询中显示的值。实体属性是否映射为identifier,如果它存在,您是否正在为@GeneratedValue
分配正确的generation strategy?
关于发电战略的文献引用:
NONE:告诉Doctrine标识符被分配(因此 由您的代码生成)。作业必须在新作业之前进行 实体传递给EntityManager#persist。没有和离开一样 完全关闭@GeneratedValue。
可能是这种情况。但是如果不看实体定义就很难说清楚。