oldtimeguitarguy / eloquent-single-table-inheritance
Laravel & Lumen 中 Eloquent 模型简单的单表继承实现
v1.0.8
2016-08-15 15:51 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 { // }
当你检索所有人时,你将在集合中得到男孩和女孩的混合。
当你只检索男孩时,你将只得到男孩。
当你只检索女孩时,你将只得到女孩。
不幸的是
- 你不能使你的
Person
类成为抽象类。 - 你必须指定父类的表
- 当创建
hasMany
关联时,你必须确保指定外键。否则,它将尝试从类名自动生成一个。