So, I just started studying symfony framework and I've been struggling to figure out how to work with some relationships I have in my database. To clarify, I'm making an admin panel for a pre-existing game database which is sort of messed up, but I can't change anything in this sql server database or else the game will have issues.
everything works just fine until I try to insert a new register into the database. If I remove the relationship, it works as expected, but if I keep it and attempt to register a new user, I get the following message:
SQLSTATE[23000]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Cannot insert explicit value for identity column in table 'users' when IDENTITY_INSERT is set to OFF. I also notice it tries to insert LoginUID which is the auto increment index key of my table.
User Entity
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;
}
User Auth Entity:
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;
}
An user doesn't really need to have a register in UserAuth, this table is used to register banned users and game masters, I want to make this association so I can fetch the user auth together with the account data in order to display it in a table. Any help will be appreciated.
Edit: I noticed the problem seems to be with the JoinColumn annotation, figured it is actually trying to join the LoginUID from UserAuth with the dbo.users, is there any way to prevent it from happening? I just want to use this relation to retrieve the user auth.