Проект Symfony наследование и sfguard

Это правильный синтаксис моего Schema.yml??

  user_type_1 :
    inheritance:
    type:             concrete
    extends:          sfGuardUser
 columns:
   name: { type: string(255) }

  user_type_2 :
    inheritance:
    type:             concrete
    extends:          sfGuardUser
 columns:
   name: { type: string(255) }

Мой проект состоит из двух типов пользователей user_type_1 и user_type_2, и я хочу, чтобы они оба наследовали от sfGuardUser, если я использую конкретный тип наследования или column_aggregation

Спасибо

1 ответ

Решение

Вы можете использовать любой из них, это зависит от того, что вы хотите. Из документов:

бетон
Конкретное наследование создает отдельные таблицы для дочерних классов. Однако в конкретном наследовании каждый класс генерирует таблицу, которая содержит все столбцы (включая унаследованные столбцы). Чтобы использовать конкретное наследование, вам нужно добавить явные вызовы parent::setTableDefinition() к дочерним классам, как показано ниже.

Агрегация столбцов
В следующем примере у нас есть одна таблица базы данных с именем entity. Пользователи и группы являются объектами, и они совместно используют одну и ту же таблицу базы данных. Таблица сущностей имеет столбец с именем type, который сообщает, является ли сущность группой или пользователем. Затем мы решаем, что пользователи относятся к типу 1, а группы - к типу 2. Единственное, что нам нужно сделать, - это создать 3 записи (как и раньше) и добавить вызов метода Doctrine_Table::setSubclasses() из родительского класса.

Использование конкретного наследования создаст 2 таблицы (user_type_1 и user_type_2), а column_aggregation создаст только 1 таблицу со столбцом type.

Другие вопросы по тегам