假设我有以下类:
我想要动物作为基类,狗是动物的子类,其他两个是狗的子类。
在Laravel中,最佳实践是什么?是创建四个模型和四个单独的表格?还是创建两个表格,一个是动物,一个是狗。
此外,如果每个动物都有一个“makeSound”函数,我可以使用接口来实现,然后假设狗会吠叫,但是不同的狗品种可能会有一些重写,使它们做一些稍微不同的事情。我困惑的是,我如何理解什么是金毛犬?
如果只是动物,我可以这样做
$animals = Animal::get();
但是我不确定如何做:
$daschunds = Daschund::get();
对于这个主题的任何建议/阅读材料将不胜感激。我在面向对象编程方面有一些了解,但在Laravel环境中不太清楚。我读了一些文章,但没有涉及到Laravel的特定内容。
由于所有计划中的模型都是动物,所以你应该肯定有一个动物表和一个动物模型。
现在,如果你更具体的模型与一般的动物有不同的行为,那么你可以继承模型,这样它们的方法就能正确处理事情。也就是说,如果你的差异只在于PHP,那么你可以让模型相互继承,引用相同的表,并且你的应用程序会根据某些标准来判断何时以及如何与不同的模型进行操作。
如果你的数据库也有差异,也就是说,在狗的情况下,你需要额外的信息,那么你可以为狗建立一个属性表,该表有一个指向动物表的外键。
最后,你可以决定为每个模型使用不同的表,这种情况下,最好实现一个抽象动物类,并让更具体的动物模型类以自己的方式扩展它,这样你就可以将共同的内容实现到抽象动物类中。
至于上述哪种方式更好,这在很大程度上取决于你的具体情况。