Skip to content

A simple single table inheritance library for eloquent.

Notifications You must be signed in to change notification settings

Soapbox/eloquent-sti

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eloquent STI (Single Table Inheritance)

Build Status Coverage Status Code Climate

Install

Via Composer

$ composer require jaspaul/eloquent-sti

Requirements

The following versions of PHP are supported by this version.

  • PHP 7.2
  • PHP 7.3
  • PHP 7.4

Usage

<?php

use Tests\Helpers\User;
use Tests\Helpers\Administrator;
use Jaspaul\EloquentSTI\Inheritable;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use Inheritable;

    /**
     * Provides a map of types to resolve for this object. The format is:
     *     'user' => User::class,
     *     'administrator' => Administrator::class
     *
     * @var array
     */
    protected $types = [
        'user' => User::class,
        'administrator' => Administrator::class
    ];
}
<?php

class Administrator extends User
{
}

Now when you select users through the User model, they'll be returned with the associated type. For instance if you have a record in the users table with the type administrator, an Administrator object will be returned when you run User::where('type', 'administrator')->first().

About

A simple single table inheritance library for eloquent.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%