Итак, я только начал изучать фреймворк Symfony и изо всех сил пытался понять, как работать с некоторыми отношениями, которые у меня есть в моей базе данных.Чтобы уточнить, я делаю панель администратора для уже существующей игровой базы данных, которая в некотором роде испорчена, но я не могу ничего изменить в этой базе данных сервера SQL, иначе у игры будут проблемы.
все работает отлично, пока я не попытаюсь вставить новый регистр в базу данных.Если я удаляю связь, она работает как положено, но если я сохраняю ее и пытаюсь зарегистрировать нового пользователя, я получаю следующее сообщение:
SQLSTATE [23000]: [Microsoft] [Драйвер ODBC 11 для SQLСервер] [SQL Server] Невозможно вставить явное значение для столбца идентификаторов в таблице «пользователи», если для параметра IDENTITY_INSERT установлено значение OFF.Я также замечаю, что он пытается вставить LoginUID, который является индексным ключом автоинкремента в моей таблице.
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пользователю на самом деле не нужно иметь регистрацию в UserAuth, эта таблица используется для регистрации забаненных пользователей и мастеров игр, я хочу создать эту ассоциацию, чтобы я мог получить аутентификацию пользователя вместе с данными учетной записи, чтобы отобразить ее вТаблица.Будем благодарны за любую помощь.
Редактировать: Я заметил, что проблема, похоже, связана с аннотацией JoinColumn, полагая, что она на самом деле пытается объединить LoginUID из UserAuth с dbo.users,Есть ли способ предотвратить это?Я просто хочу использовать это отношение для получения аутентификации пользователя.