Package Data | |
---|---|
Maintainer Username: | oldtimeguitarguy |
Maintainer Contact: | khepler@brandmovers.com (Karl Hepler) |
Package Create Date: | 2016-07-09 |
Package Last Update: | 2016-08-15 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-22 03:03:04 |
Package Statistics | |
---|---|
Total Downloads: | 5,046 |
Monthly Downloads: | 6 |
Daily Downloads: | 0 |
Total Stars: | 1 |
Total Watchers: | 1 |
Total Forks: | 0 |
Total Open Issues: | 0 |
This is a very simple implementation of single table inheritance for Eloquent (Laravel & Lumen).
There are no attribute restrictions or anything that could be considered robust. There are other libraries that do those things quite well.
This simply allows you to have a single table that, when fetched, is thrown into an Eloquent model of your choice, defined by a column in that table (typically "type", which is the default keyed type column. You can customize this).
For instance, imagine you have the following table (called people
):
| id | name | sex | | ---|------|------| | 1 | Fred | boy | | 2 | Jill | girl |
... and imagine you had the following classes:
class Person extends StiParent
{
protected $table = 'people';
protected static $stiKey = 'sex';
protected static $stiChildren = [
'boy' => Boy::class,
'girl' => Girl::class,
];
}
class Boy extends Person
{
//
}
class Girl extends Person
{
//
}
When you fetch all people, you will get a mix of boys & girls in the collection.
When you fetch just boys, you will get just boys.
When you fetch just girls, you will get just girls.
Person
class abstract.hasMany
association, you must make sure you specify the foreign key. Otherwise, it will try to automatically generate one from the class name.