【发布时间】:2019-01-30 16:05:19
【问题描述】:
所以,我刚开始研究 symfony 框架,我一直在努力弄清楚如何处理我数据库中的一些关系。澄清一下,我正在为一个已经存在的游戏数据库创建一个管理面板,这有点搞砸了,但我无法更改这个 sql server 数据库中的任何内容,否则游戏会出现问题。
在我尝试将新寄存器插入数据库之前,一切正常。如果我删除该关系,它会按预期工作,但如果我保留它并尝试注册新用户,我会收到以下消息:
SQLSTATE[23000]:[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]当 IDENTITY_INSERT 设置为 OFF 时,无法在表“users”中插入标识列的显式值。我还注意到它尝试插入 LoginUID,它是我的表的自动增量索引键。
用户实体
class Users
{
/**
* @var int
*
* @ORM\Column(name="LoginUID", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="login", type="string", length=255)
*/
private $username;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="Connecting", type="integer")
*/
private $connecting;
/**
* @var string
*
* @ORM\Column(name="passwd", type="string", length=255)
*/
private $password;
/**
* @var integer
*
* @ORM\Column(name="sex", type="integer")
*/
private $sex;
/**
* @var \DateTime
*
* @ORM\Column(name="firstlogin", type="datetime")
*/
private $firstlogin;
/**
* @var \DateTime
*
* @ORM\Column(name="lastlogin", type="datetime")
*/
private $lastlogin;
/**
* @ORM\OneToOne(targetEntity="UserAuth", fetch="EAGER")
* @ORM\JoinColumn(name="LoginUID", referencedColumnName="LoginUID")
*/
private $userAuth = null;
/**
*
* @ORM\OneToOne(targetEntity="UserNickname", fetch="EAGER")
* @ORM\JoinColumn(name="LoginUID", referencedColumnName="LoginUID")
*/
private $nickname = null;
/**
* Get Id
*
* @return int
*/
public function getId()
{
return $this->id;
}
用户身份验证实体:
class UserAuth
{
/**
* @var int
*
* @ORM\Column(name="LoginUID", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\Column(name="AuthLevel", type="integer")
*
* @ORM\OneToOne(targetEntity="Users")
*
* @ORM\JoinColumn(name="LoginUID", referencedColumnName="LoginUID")
*/
private $authLevel;
/**
* @var bool
*
* @ORM\Column(name="IsReset", type="boolean")
*/
private $isReset;
/**
*
* @ORM\OneToOne(targetEntity="UserNickname", fetch="EAGER")
*
* @ORM\JoinColumn(name="LoginUID", referencedColumnName="LoginUID")
*/
private $nickname;
/**
*
* @ORM\OneToOne(targetEntity="UserAuthDate", fetch="EAGER")
* @ORM\JoinColumn(name="LoginUID", referencedColumnName="LoginUID")
*/
private $limitDate;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
用户实际上不需要在UserAuth中注册,该表用于注册被禁止的用户和游戏大师,我想建立这种关联,以便我可以将用户身份验证与帐户数据一起获取,以便将其显示在表格中。任何帮助将不胜感激。
编辑:我注意到问题似乎出在 JoinColumn 注释上,认为它实际上是在尝试使用 dbo.users 从 UserAuth 加入 LoginUID,有什么办法可以防止它发生?我只是想使用这个关系来检索用户身份验证。
【问题讨论】:
-
不是重复的,我的问题是别的,和教义orm本身有关。
标签: php symfony doctrine-orm