У меня есть следующий schema.yml
Proposition:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255), notnull: true }
slug: { type: string(255), notnull: true, unique: true }
proposition_type_id: { type: integer, notnull: true }
icon: { type: string(255) }
overview: { type: string(4000) }
features: { type: string(4000) }
benefits: { type: string(4000) }
published: { type: boolean, notnull: true, default: 1 }
relations:
PropositionType: { onDelete: CASCADE, local: proposition_type_id, foreign: id }
Products:
class: Product
refClass: PropositionProduct
local: proposition_id
foreign: product_id
foreignAlias: PropositionProducts
PropositionType:
columns:
name: { type: string(255), notnull: true }
Review:
actAs: { Timestampable: ~ }
columns:
proposition_id: { type: integer, notnull: true }
review: { type: string(4000), notnull: true }
name: { type: string(255), notnull: true }
company: { type: string(255) }
published: { type: boolean, notnull: true, default: 1 }
relations:
Proposition: { onDelete: CASCADE, local: proposition_id, foreign: id }
PropositionProduct:
columns:
proposition_id: { type: integer, primary: true }
product_id: { type: integer, primary: true }
relations:
Proposition: { onDelete: CASCADE, local: proposition_id, foreign: id }
Product: { onDelete: CASCADE, local: product_id, foreign: id }
Product:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255), notnull: true }
slug: { type: string(255), notnull: true, unique: true }
icon: { type: string(255) }
ataglance: { type: string(4000) }
idealfor: { type: string(4000) }
details: { type: string(4000) }
specsheet: { type: string(255) }
chart: { type: string(255) }
published: { type: boolean, notnull: true, default: 1 }
relations:
RelatedProducts:
class: Product
refClass: RelatedProduct
local: product_id
foreign: related_product_id
foreignAlias: RelatedProducts
RelatedProduct:
columns:
product_id: { type: integer, primary: true }
related_product_id: { type: integer, primary: true }
relations:
Product: { onDelete: CASCADE, local: product_id, foreign: id }
Product: { onDelete: CASCADE, local: related_product_id, foreign: id }
Segment:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255), notnull: true }
slug: { type: string(255), notnull: true, unique: true }
published: { type: boolean, notnull: true, default: 1 }
relations:
Products:
class: Product
refClass: SegmentProduct
local: segment_id
foreign: product_id
foreignAlias: SegmentProducts
SegmentProduct:
columns:
segment_id: { type: integer, primary: true }
product_id: { type: integer, primary: true }
relations:
Segment: { onDelete: CASCADE, local: segment_id, foreign: id }
Product: { onDelete: CASCADE, local: product_id, foreign: id }
Я запустил:
php symfony doctrine:build --all --and-load --no-confirmation
, и база данных была успешно построена.
Но почему proposition_segment
таблица была создана?
CREATE TABLE `proposition_segment` (
`segment_id` bigint(20) NOT NULL DEFAULT '0',
`product_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`segment_id`,`product_id`),
KEY `proposition_segment_product_id_product_id` (`product_id`),
CONSTRAINT `proposition_segment_product_id_product_id` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE CASCADE,
CONSTRAINT `proposition_segment_segment_id_segment_id` FOREIGN KEY (`segment_id`) REFERENCES `segment` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Насколько я понимаю, моя схема должна детализировать, что Segment
и Product
имеют отношение многие ко многим через таблицу SegmentProduct
.
Аналогично,Proposition
и Product
имеют отношение многие ко многим через таблицу PropositionProduct
.
Я не могу понять, почему Doctrine создает таблицу proposition_segment
.Кроме этого, база данных выглядит правильно - она создает таблицы proposition_product
и segment_product
, как и ожидалось.
Когда я добавляю данные через серверную часть, сгенерированную Symfony, таблица proposition_segment
остается пустой, что увеличивает мои подозрениячто он создан по ошибке.