Download the PHP package jonnypickett/eloquent-sti without Composer
On this page you can find all versions of the php package jonnypickett/eloquent-sti. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download jonnypickett/eloquent-sti
More information about jonnypickett/eloquent-sti
Files in jonnypickett/eloquent-sti
Package eloquent-sti
Short Description Single Table Inheritance for Eloquent ORM
License MIT
Homepage https://github.com/jonnypickett/eloquent-sti
Informations about the package eloquent-sti
Eloquent Single Table Inheritance
Single Table Inheritance for Laravel's Eloquent ORM.
Install
Via Composer
After updating composer, add the ServiceProvider to the providers array in config/app.php
Usage
Use the SingleTableInheritance trait in any Eloquent model to take advantage of Single Table Inheritance in Laravel with the model's subclasses.
A table taking advantage of Single Table Inheritance needs to store subclass names. By default, this package uses a field named subclass_name
, so add this field, or the field name you choose (configuration is shown later), to your table.
Once this field is added to your database table, you will need to add the SingleTableInheritance
trait, make sure to specify the table property, and add the subclass name field to the $fillable
array all on the parent model definition
Now just extend the parent model with any child models
That's it. Now the entries in your table, animals
for our example, will always be returned as an instance of a specific subclass. When retrieving a collection, the collection will be a collection of various subclass instances.
Configuration
By default, the subclass names will be stored in a field named subclass_name
. This can be changed project wide by updating your .env file
or publishing and updating the package configuration file in app/config/eloquent-sti.php
or can be changed on a per model basis by adding a $subclassField
property to your parent model
Credit
Inspiration for this package came way back when I came across this Laravel.io forum post by Shawn McCool
License
The MIT License (MIT). Please see License File for more information.