я пытаюсь сделать слабую связь между моим User
столом и моим Confirmation
столом, будучи Confirmation
слабым User
.Чтобы представить это, моя схема выглядит следующим образом:
User:
actAs: [Timestampable]
connection: doctrine
tableName: User
columns:
id:
type: integer
primary: true
autoincrement: true
username:
type: string(50)
notnull: true
name:
type: string(50)
notnull: true
.
.
.
indexes:
myindex1:
fields:
username:
sorting: ASC
length: 50
type: unique
relations:
Confirmation:
foreignType: one
attributes:
export: all
validate: true
Confirmation:
actAs: [Timestampable]
connection: doctrine
tableName: Confirmation
columns:
user_id:
type: integer
primary: true
hash:
type: string(64)
notnull: true
relations:
User:
local: user_id
foreign: id
type: one
foreignType: one
При выполнении команды $ php symfony doctrine:build --all --no-confirmation
я получил эту ошибку в выводе:
SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'id' doesn't exist in table. Failing Query: "CREATE TABLE Confirmation (user_id BIGINT, hash VARCHAR(64) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX id_idx (id), PRIMARY KEY(user_id)) ENGINE = INNODB". Failing Query: CREATE TABLE Confirmation (user_id BIGINT, hash VARCHAR(64) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX id_idx (id), PRIMARY KEY(user_id)) ENGINE = INNODB
так что, похоже, доктринагенерация индекса по полю, которое не было определено (id
), как вы можете видеть в INDEX id_idx (id)
.Почему доктрина генерирует этот индекс?Как я могу смоделировать то, что я хочу?
Документация доктрины не очень обширна в вопросах взаимоотношений, любая ссылка на хороший сайт документации будет очень цениться ...
Заранее спасибо за любыепомогите !!!