@4sadly

Eloquent orm, можно ли сделать разные сущности в одной таблице?

Можно ли в зависимости от поля type в таблице users использовать разные сущности, например если type = 0, то это класс Admin, если 1 то User?
  • Вопрос задан
  • 265 просмотров
Решения вопроса 1
New_Horizons
@New_Horizons
Бред:
Да, можно. Но я не уверен что с вашем случае это нужно. Мне нужно было, потому что приходилось работать с уже существующей структурой таблиц. Я делал так: Базовый класс модели, от которой наследуются два других. В базовом классе такая конструкция:
protected static function boot()
{
	parent::boot();

	if (static::TYPE) {

		static::addGlobalScope('type_scope', function (Builder $builder) {

			$table = $builder->getModel()->getTable();

			$builder->where("{$table}.type", '=', static::TYPE);
		});
	}
}


В дочерних классах нужно определить константу TYPE и в свойство $attributes добавить тип по умолчанию для конкретного класса
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Для основных сущностей, представленных самостоятельными классами - не стоит, головной боли будет больше, чем пользы.
А вот для вспомогательных (например, для хранения данных прикрепляемых к экземплярам разных классов файлов) - вовсю используется и описано в документации как Polymorphic Relationships.
Ответ написан
Sanes
@Sanes
Если структура одинаковая, то почему нет? В вашем примере это пользователь. Тоже самое может быть с типами публикаций (блог, новости и т.п.).
Сущность одна, но типы разные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы