同一个表的Eloquent实例的不同实现

时间:2018-02-11 12:48:51

标签: php laravel eloquent

我目前正在参加锦标赛组织项目,我想了解同一模型的最佳技术,例如我有一个名为matches的模型,而不是检索与matches相关的数据,但这些matches可能有不同的类型,具体取决于match_type模型中指定的matches字段,我所做的是创建父类/Match,并且具有不同类型的匹配扩展此父类。例如:

Class SinglElimination/Match extends /Match{}
Class GroupStage/Match extends /Match{}

所以使用这个设计我必须先得到父匹配才能获得match_type,然后重新运行查询以获得与所需子模型的匹配

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

我知道它远不是干净的,所以你会如何实现呢?

1 个答案:

答案 0 :(得分:1)

如果我是你,我会分开这三个类并排除任何扩展。请查看Polymorphic中的Laravel关系,此处为quick link。这将是cleaner方法,在我看来,这将是最好的方法,您只需要正确设计tables并正确地relationships