【发布时间】:2014-08-13 12:42:34
【问题描述】:
默认的一对一关系方案是
CREATE TABLE Product (
id INT AUTO_INCREMENT NOT NULL,
shipping_id INT DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
CREATE TABLE Shipping (
id INT AUTO_INCREMENT NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
ALTER TABLE Product ADD FOREIGN KEY (shipping_id) REFERENCES Shipping(id);
但我需要使用这个方案,但需要对其进行一些修改ON DELETE SET NULL ON UPDATE SET NULL;:
CREATE TABLE Product (
id INT AUTO_INCREMENT NOT NULL,
shipping_id INT DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
CREATE TABLE Shipping (
id INT AUTO_INCREMENT NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
ALTER TABLE Product ADD FOREIGN KEY (shipping_id) REFERENCES Shipping(id) ON DELETE SET NULL ON UPDATE SET NULL;
我可以用学说实体配置创建这个方案吗?
附:我有两个实体:Vendor 和 Image
BW\ShopBundle\Entity\Vendor:
type: entity
table: vendors
id:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToOne:
image:
targetEntity: BW\FileBundle\Entity\Image
cascade: [persist, remove]
和
BW\FileBundle\Entity\Image:
type: entity
table: images
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
filename:
type: string
length: 255
nullable: true
我使用oneToOne Unidirectional 关系。
所以当我删除Image 对象时,我有一个错误,因为我有Unidirectional 关系(重要的是要知道我不能更改与bidirectional 的关系)
【问题讨论】:
标签: php mysql symfony doctrine-orm