这是常见的情况,但到目前为止,我仍然无法以某种方式找到合理的解决方案。基本上,我需要以下内容:
我有模型House
,其中包含其他几个模型(例如Brick
,“ Stick”,“ Chair”等)。它们每个都与众议院有一个归属关系(因此基本上在sticks
,chairs
和bricks
表中有一个house_id
列)。每个模型都包含一个public function house()
方法,该方法返回它们所属的房屋。现在出现了一个问题,我想通过一种方法来获得房屋的所有用品,例如public function supplies()
,它应该返回类Stick
,{{1} }和Chair
。有什么方便的方法可以做到这一点吗?例如,我可以通过一个特性将这些类联合起来,并以某种方式指向房屋的方法中的那个特性,或者可以使用一个Brick
的BaseClass,所有供给都应该继承?有什么建议吗?非常感谢您的任何帮助,并在此先感谢!
答案 0 :(得分:1)
Laravel中没有对此的内置支持。
您可以定义单独的HasMany
关系,然后将它们与accessor合并:
class House extends Model {
public function bricks() {
return $this->hasMany(Brick::class);
}
public function chairs() {
return $this->hasMany(Chair::class);
}
public function sticks() {
return $this->hasMany(Stick::class);
}
public function getSuppliesAttribute() {
return $this->bricks->toBase()->merge($this->chairs)->merge($this->sticks);
}
}
$supplies = $house->supplies;