【发布时间】:2018-09-25 07:00:07
【问题描述】:
这是我的(简化的)模型:
abstract class Animal extends Illuminate\Database\Eloquent\Model
{
protected $name;
}
class Cat extends Animal
{
}
class Dog extends Animal
{
}
猫和狗还有其他几个属性。我已经抽象了动物,因为每只动物都是猫或狗,所以不会有动物的实际实例。
现在,我希望能够列出:
-
Cat::all()应该检索所有猫。 -
Dog::all()应该检索所有猫。 -
Animal::all()应该检索所有的猫和狗。
eloquent 通常可以做到这一点吗?如果,是:我应该为此目的使用多态关系吗?
【问题讨论】:
-
您是否对猫和狗使用单独的表格?
-
因为它们代表不同的类,我想我应该,不是吗?
-
这是你的决定。您的超类是否需要比
Animal::all()更多的功能? -
如果可能,全套 Eloquent 操作,如 Animal::find() 等 免责声明:如果 Eloquent 无法提供干净的解决方案,我可以删除子类并使用属性 $而是动物类中的物种。如果可能,我想使用面向对象,但我不知道 Eloquent 是否支持它。
-
您还有
animals表吗?
标签: php database laravel polymorphism