Download the PHP package mountainclans/laravel-polymorphic-model without Composer
On this page you can find all versions of the php package mountainclans/laravel-polymorphic-model. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mountainclans/laravel-polymorphic-model
More information about mountainclans/laravel-polymorphic-model
Files in mountainclans/laravel-polymorphic-model
Package laravel-polymorphic-model
Short Description Пакет, добавляющий возможность хранить в одной таблице модели разных типов, имеющих общего предка
License MIT
Homepage https://github.com/mountainclans/laravel-polymorphic-model
Informations about the package laravel-polymorphic-model
Laravel Polymorphic Model
Пакет, добавляющий возможность хранить в одной таблице модели разных типов, имеющих общего предка
Установка
Установите пакет при помощи Composer:
Использование
Добавьте в родительский класс использование трейта PolymorphicModel
и константу ALLOWED_TYPES
, содержащую в себе допустимые типы классов-наследников.
Также для корректного сохранения модели в той же таблице явно укажите в родителе, какую таблицу он использует.
Убедитесь, что в таблице присутствует поле type
.
В классах-наследниках переопределите функцию getInstanceType
, возвращающую тип:
Теперь Вы можете создавать класс-наследник напрямую и он будет сохранён в родительской таблице.
Вы можете извлекать в рамках одного запроса любых наследников основной модели:
Или извлекать только модели нужного класса:
Или указать нужные типы в запросе с использованием where и других конструкций:
Количество уровней наследования моделей не ограничено.
Атрибут RequiresOverride
Внутри себя трейт PolymorphicModel использует атрибут #[RequiresOverride]
.
Вы можете использовать его для того, чтобы явно пометить, какие методы ваших моделей должны быть переопределены в классах-наследниках.
Обязательно объявите в классе использование трейта CheckOverrides
.
Если переопределение не сделано, в момент выполнения метода boot
модели-наследника будет выброшено исключение RequiredOverrideNotExistsException
.
Авторы
- Vladimir Bajenov
- All Contributors
Лицензия
The MIT License (MIT). Please see License File for more information.
All versions of laravel-polymorphic-model with dependencies
spatie/laravel-package-tools Version ^1.16
illuminate/contracts Version ^10.0||^11.0||^12.0