用过一些PHP的mvc框架,但是每次在处理这样一个业务逻辑涉及多个model的操作和对应数据库表的写入时,都会有点感觉迷茫。
每个model的处理有可能会出异常或者未通过验证保存失败,虽然可以使用transaction保证数据一致性,但是我总觉得自己的写业务逻辑的地方不是很正确,有没有什么好的实践?
比如商城卖东西,要处理账户余额,订单,商品,等等多个表对应Model。
用过一些PHP的mvc框架,但是每次在处理这样一个业务逻辑涉及多个model的操作和对应数据库表的写入时,都会有点感觉迷茫。
每个model的处理有可能会出异常或者未通过验证保存失败,虽然可以使用transaction保证数据一致性,但是我总觉得自己的写业务逻辑的地方不是很正确,有没有什么好的实践?
比如商城卖东西,要处理账户余额,订单,商品,等等多个表对应Model。
把orm object完全等同于model使用到最后就会进入这样的困境
你可以去读一下DDD(领域驱动设计)方面的书充实一下自己
具体到你这个问题,你需要一个服务层(services),把卖东西这个业务逻辑放到单独的service类里面,由service来修改订单、商品、账户余额等
也就是说,最外层只需要直接去调用service类的卖东西方法,不需要直接跟orm打交道
每个orm object只需要封装少量核心逻辑即可(有些人把这种class称为贫血模型),涉及到多个orm object的复杂逻辑放到service里面去实现
封装了业务逻辑的类就是model,model并不仅仅是orm
领域驱动设计和实践