Использование абстрактного подкласса в Doctrine: любопытная генерация базы данныхPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Использование абстрактного подкласса в Doctrine: любопытная генерация базы данных

Сообщение Anonymous »

Сейчас я работаю над проектом Symfony2/MySQL, используя Doctrine2. В нашей концепции у нас есть «супер» абстрактный класс, который расширяется абстрактными подклассами, которые сами расширяются конкретными классами.
Вот мой код: И затем: И вот мой последний код: Когда я генерирую свой код SQL, я получаю:

Код: Выделить всё

CREATE TABLE superabstractclass (id INT AUTO_INCREMENT NOT NULL, libelle LONGTEXT NOT NULL, discr VARCHAR(2) NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE abstractclass (id INT NOT NULL, subLabel LONGTEXT NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE concreteclass1 (id INT NOT NULL, details LONGTEXT NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE concreteclass2 (id INT NOT NULL, detailsautres LONGTEXT NOT NULL, PRIMARY KEY(id))
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

ALTER TABLE abstractclass
ADD CONSTRAINT FK_438A1A85BF396750 FOREIGN KEY (id)
REFERENCES superabstractclass (id) ON DELETE CASCADE;

ALTER TABLE concreteclass1
ADD CONSTRAINT FK_474E75CFBF396750 FOREIGN KEY (id)
REFERENCES superabstractclass (id) ON DELETE CASCADE;
Последняя строка меня немного удивила. Почему моя таблица конкретныйкласс1 ссылается на суперабстрактныйкласс (см. *FK_474E75CFBF396750*), а не на абстрактный класс. Я беспокоюсь за целостность своих данных: что произойдет, если я удалю строку абстрактного класса. У меня по-прежнему будет строка superabstractclass и конкретный класс1 (то есть экземпляры объектов), но я потеряю некоторые фрагменты информации о своих объектах.
Я что-то упустил? Я искал уже несколько часов, но не смог ничего найти. Спасибо за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/324 ... generation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»