Есть ли способ при использовании Doctrine создать таблицу, похожую на другую? Я знаю, что в MySQL есть функция для этого:
CREATE TABLE user2 LIKE user;
а таблицы user и user2 будут идентичными. Можно ли это сделать в доктрине?
Есть ли способ при использовании Doctrine создать таблицу, похожую на другую? Я знаю, что в MySQL есть функция для этого:
CREATE TABLE user2 LIKE user;
а таблицы user и user2 будут идентичными. Можно ли это сделать в доктрине?
Я предполагаю, что вы ищете определение (давайте использовать ваш пример) на уровне схемы, которую user2
наследует от user
при создании вашей модели. Вы можете сделать это, используя наследование concrete доктрины, которое описан в документации.
Итак, в вашем schema.yml
:
User:
columns:
name: string
User2:
inheritance:
extends: User
type: concrete
columns:
something: int
Таким образом, user2
будет отдельной таблицей и будет содержать те же столбцы («имя»), которые ранее были определены в user
. Я не уверен, зачем вам нужны две идентичные таблицы, но это определенно возможно с помощью описанного выше метода.
Я думаю нет. :(
Вы можете создавать таблицы из шаблона, как здесь http://www.doctrine-project.org/documentation/cookbook/1_1/en/plug-and-play-schema-information-with-templates или используйте Doctrine_RawSql.
Doctrine предоставляет для этого простой метод: Doctrine_Record::copy().
$copy = $user->copy();
Обратите внимание, что копирование записи с помощью функции copy() возвращает новую запись (состояние TDIRTY) со значениями старой записи и копирует отношения этой записи. Если вы не хотите копировать отношения, вам нужно использовать copy(false).
Получить копию пользователя без отношений
$copy = $user->copy(false);