考虑Laravel 4.1中的以下场景
理想情况下,我想实现以下目标:
为了更好地说明我的想法:
class Set extends Eloquent {
// ...
public function items() {
// provides a "transparent" method to access ALL of its items ... no matter what class
}
}
和
class SubItemOne extends Item { // ... }
class SubItemTwo extends Item { // ... }
abstract class Item extends Eloquent {
public function set() {
return $this->belongsTo('Set');
}
}
因为每个子类的核心与其他子类共享很多共同点(想想:它们都可以在集合中移动,或者它们可以附加图像等......所有这些都可能是在抽象Item类中定义。)
基本上,我希望能够在
等情况下访问属于我的Set的所有项目 Set::with('items')->find(1);
但我真的不确定用于'逆'的关系是什么类型。
到目前为止我考虑过的事情:
我有点被困在这里,但我无法相信我是唯一面对这种情况的人......我真的希望这里有一个“最佳实践”的建议!
答案 0 :(得分:0)
你可以将你的课程层级与数据库层次结合起来。有许多方法可以在数据库模式中表示继承。
考虑您的情况,您可以拥有以下表格:
SubItemXXX 与 Set 实体具有1:1的关系。您只需要一个简单的JOIN来合并 SubItemXXX 和 Set
您可以在以下网址了解详情:How can you represent inheritance in a database?