【发布时间】:2014-03-17 22:48:16
【问题描述】:
我创建了一个小项目,将数据从控制器传递到服务类,该服务类使用 ORM 来保存对象:
类似这样的:
UserController 接收帖子数据并将其传递给UserService。
UserService 创建一个用户对象并使用$user.save(); 将其保存到数据库中
现在我正在为两件事苦苦挣扎:
第一:
假设我使用存储库添加用户,它会是这样的:
控制器将发布数据传递给创建用户对象并将其传递给存储库的服务。存储库唯一要做的就是调用$user.save(),这不是有点奇怪吗?为什么不在我的服务中调用 save ,因为使用存储库来调用 save 方法对我来说似乎有点过头了。
第二:
我读到,当您使用存储库时,您可以轻松更改存储方法,因为您的应用程序不知道使用的是哪一种。但在将对象传递到存储库之前,您必须创建它。
使用 ORM,每个都有不同的方式:Doctrine 使用 $user = new User 而 Propel 使用 $user = new User(),idiorm 使用 $user = ORM::for_table('user')->create(); 所以当出于某种原因切换到另一个 ORM 时,也会在你的项目中改变它,不是吗?
【问题讨论】: