Привет всем и спасибо за помощь заранее!symfony2 doctrine mapping двунаправленные ссылки из существующего DB
Я newbe в рамках Symfony2, и я столкнулся с вопросом:
Как создать двунаправленную связь с существующей базой данных?
Сначала я создал базу данных для моего проекта, а затем сопоставил ее с yml-файлами; Просто, DB выглядит следующим образом:
Таблица user
:
CREATE TABLE user (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR(255) NULL ,
`password` VARCHAR(255) NULL ,
`customer_id` INT NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_user_customer1_idx` (`customer_id` ASC) ,
CONSTRAINT `fk_user_customer1`
FOREIGN KEY (`customer_id`)
REFERENCES `customer` (`id`)
) ENGINE = InnoDB
Таблица customer
:
CREATE TABLE IF NOT EXISTS `customer` (
`id` INT NOT NULL AUTO_INCREMENT ,
`surname` VARCHAR(45) NULL ,
`name` VARCHAR(45) NULL ,
`midname` VARCHAR(45) NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
Если я прав, "пользователь" есть много-к-одному к "клиент"; и «пользователь» является стороной-владельцем, «клиент» - обратная сторона;
Затем я запустить эти команды:
php app/console doctrine:mapping:import ShadowTestBundle yml --force
И получил результат:
Shadow\TestBundle\Entity\User:
type: entity
table: user
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
login:
type: string
length: 255
fixed: false
nullable: true
password:
type: string
length: 255
fixed: false
nullable: true
manyToOne:
customer:
targetEntity: Customer
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
customer_id:
referencedColumnName: id
orphanRemoval: false
lifecycleCallbacks: { }
Shadow\TestBundle\Entity\Customer:
type: entity
table: customer
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
surname:
type: string
length: 45
fixed: false
nullable: true
name:
type: string
length: 45
fixed: false
nullable: true
midname:
type: string
length: 45
fixed: false
nullable: true
lifecycleCallbacks: { }
и удовлетворяющие объекты от команды запуска:
php app/console doctrine:generate:entities ShadowTestBundle
Сущность правильно отражает YML-файлы ;
Но и yml-файлы и сущности используют только однонаправленные ссылки; возможно ли генерировать двунаправленные ссылки, или я должен написать его вручную? Насколько я вижу, это должно выглядеть так:
Shadow\TestBundle\Entity\Customer:
type: entity
table: customer
fields:
...
midname:
type: string
length: 45
fixed: false
nullable: true
oneToMany:
user:
targetEntity: User
mappedBy: cart
lifecycleCallbacks: { }
И у меня есть немного подвопрос: Почему на владеющей стороне (User), который генерируется с помощью доктрины, поле «inversedBy» является нулевым?