Php 同一表中雄辩实例的不同实现

Php 同一表中雄辩实例的不同实现,php,laravel,eloquent,Php,Laravel,Eloquent,我目前正在从事一个锦标赛组织项目,我想知道对同一个模型进行不同实现的最佳技术是什么,例如,我有一个名为匹配的模型,而不是检索与匹配相关的数据,但是这些匹配可能有不同的类型,这取决于匹配模型中指定的匹配类型字段,我所做的是创建父类/match,并使用不同类型的匹配扩展此父类。例: Class SinglElimination/Match extends /Match{} Class GroupStage/Match extends /Match{} 因此,在这种设计中,我必须首先获得父匹配以获得

我目前正在从事一个锦标赛组织项目,我想知道对同一个模型进行不同实现的最佳技术是什么,例如,我有一个名为
匹配
的模型,而不是检索与
匹配
相关的数据,但是这些
匹配
可能有不同的类型,这取决于
匹配
模型中指定的
匹配类型
字段,我所做的是创建父类
/match
,并使用不同类型的匹配扩展此父类。例:

Class SinglElimination/Match extends /Match{}
Class GroupStage/Match extends /Match{}
因此,在这种设计中,我必须首先获得父匹配以获得
匹配类型
,然后重新运行查询以获得与所需子模型的匹配

$match=Match::find($id);
$type = $match->match_type;
$childMatch = new $match_type.'/Match'();
$match = $match->where('_id', $this->_id)->first();

我知道这是非常不干净的,那么您将如何实现这一点呢?

如果我是您,我将分离这3个类并排除任何扩展。查看
Laravel
中的
多态关系,下面是。这将是一种更干净的方法,在我看来,这将是这里最好的方法,你所要做的就是正确地设计
表,正确地处理
关系
这是一个有效的PHP语法吗?不确定,但我有一个类似的实现,我只是这样写的,以显示这个想法,而不是语法,但如果匹配是一个独立的模型,它与另一个类没有关系,我将如何使用多态关系?好的
polymorphic
关系要求您在多个模型之间有一个关系,如果
Match
与任何类都没有关系,然后,您将需要使用
DB
facade创建一个手工查询来获取目标实体,而不是捕获
Match
类以及您需要的内容。