使用Eloquent在Laravel中的存储库模式

时间:2018-03-13 12:52:46

标签: php mysql mongodb laravel repository-pattern

对于正在工作的项目,我在Laravel中创建了一个API。我想使用MongoDB作为数据库驱动程序,这对我来说是新的。所以我想在开始时使用Eloquent和MySQL,当我有足够的信心切换到MongoDB时。

我正在阅读一些关于Laravel中的存储库模式的教程,并看到一些返回了一个雄辩的模型,如this one。在我看来,当例如create($data)返回一个模型时,你只限于适合Eloquent的数据库驱动程序。我想知道返回一个雄辩的模型是否是一个好习惯。因为如果我现在和将来使用MySQL MongoDB(没有Laravel MongoDB软件包),我需要在控制器中重写一些代码,因为使用了雄辩的模型而不是数组(例如)。也许是一个'包装'模型和代码之间有可能吗?对此有什么好的建议,提示或想法吗?

如果您想知道为什么我现在要使用MySQL以及之后切换到MongoDB,原因是项目有时间限制。我还在学习Mongo。因此,为了满足我的雇主的需求,我在完成第一个版本/原型之前不使用MongoDB。

2 个答案:

答案 0 :(得分:1)

如果你使用雄辩和它的方法,你应该是好的。只是不要使用DB::raw()方法,因为它可能会破坏您的查询,如果它与您当前所在的数据库引擎不匹配。

如果您想查看它(使用tdd),我写了一篇repository pattern文章。

但是如果你真的想要未来证明,你可以混合Doctrine w Laravel,因为Doctrine是一个数据映射器模式。 Link

使用laravel-doctrine包,您可以将数据保存在您喜欢的数据库引擎中。

答案 1 :(得分:0)

laravel-mongodb这样好吗?

扩展Eloquent以使用MongoDB而不是MySQL。