oldtimeguitarguy/eloquent-single-table-inheritance

Laravel & Lumen 中 Eloquent 模型简单的单表继承实现

v1.0.8 2016-08-15 15:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:47 UTC


README

这是一个 Eloquent (Laravel & Lumen) 单表继承的非常简单的实现。

没有任何属性限制或任何被认为是健壮的东西。还有其他库做得相当好。

这仅仅允许你有一个单表,当检索时,会被转换成你选择的 Eloquent 模型,由表中的一列定义(通常是 "type",这是默认的键类型列。你可以自定义这个)。

例如,假设你有一个以下表格(称为 people

... 假设你还有以下类

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
{
    //
}

当你检索所有人时,你将在集合中得到男孩和女孩的混合。

当你只检索男孩时,你将只得到男孩。

当你只检索女孩时,你将只得到女孩。

不幸的是

  1. 你不能使你的 Person 类成为抽象类。
  2. 你必须指定父类的表
  3. 当创建 hasMany 关联时,你必须确保指定外键。否则,它将尝试从类名自动生成一个。