php - Laravel 中使用 Eloquent 的存储库模式

标签 php mysql mongodb laravel repository-pattern

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

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

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

最佳答案

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

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

但如果你真的想要面向 future 的证明,你可以将 Doctrine 与 Laravel 混合使用,因为 Doctrine 是一种数据映射器模式。 Link

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

关于php - Laravel 中使用 Eloquent 的存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49256739/

相关文章:

php - 类似于 Facebook 搜索的 Laravel 原始全文查询

php - 公共(public)用户如何访问 PHP 文件?

ruby - 如何在 Mongoid 中为子类设置集合名称?

node.js - MongoDB 配对和删除顺序数据库条目的最佳方法

php - 从mysql逆向到mongodb最合适的方法

PHP:如何在不损失可见质量的情况下(自动)压缩图像?

php - Blade.php 登录后需要显示用户详细信息

MySQL:产品、属性、库存水平

mysql - 如何将用 Ruby 编写的 MySQL 查询转换为 SQL?

mysql - 如何使用代理设置在 Windows 7 上安装 RMysql