Проект 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.