[英]PHP Laravel Eloquent: has many-relation with child classes
假设我有关系...
abstract class Furniture extends Model{...]
class Chair extends Furniture{...}
class Table extends Furniture(...)
...还有房间的房间...
class Room extends Model{...}
给出以下雄辩的关系...
class Room extends Model{
public function furnitures(){
return $this->hasMany("App/Furniture");
}
}
abstract class Furniture extends Model{
public function room(){
return $this->belongsTo("App/Room");
}
}
我们的目标是,呼吁...
$room->furnitures;
...返回一组不同的继承的家具对象。 所以,如果我做这样的事情:
foreach($this->furnitures as $fur){
echo get_class($fur)." -> ".get_parent_class($fur)."\n";
}
会导致类似:
Chair -> Furniture
Table -> Furniture
Table -> Furniture
Chair -> Furniture
Chair -> Furniture
现在,这是不可能的,因为默认情况下实例化了抽象类。
是否有可能雄辩地建立这样的关系? 如果是,如何实现呢?
使用静态保留字。 在家具制造方法如
public function getClassName(){
return static::class;
}
并称之为
foreach($this->furnitures as $fur){
echo get_class($fur)." -> ".fur->getClassName."\n";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.