Laravel程序的分层
1、Service层:业务的入口,如UserService
2、Repository层:通常和Service层对应,防止Service文件过大,对一些需要跨Model处理的业务,需要在Repository层来实现。
3、Model层:基础层,一些和数据表相关的简单的功能可以放在这里供调用。
对业务操作的归一化处理
每一个业务项(如用户、文章等,不是每一个表),都需要有一个createXXX、updateXXX、deleteXXX三个方法,他们需要写在Repository类中。
对所有业务层的对象的操作,最终都需要通过这3个方法来实现,这样的目的是做到数据修改的统一处理,方便在这里做日志、缓存等处理。
之所以不通过Laravel检测Model的事件来实现,是因为该种方式是针对单表的,不是针对业务的,会显示太麻烦和不合适。
比如增加一个用户createUser,里面涉及了操作多个表(如用户扩展表),这是一个原子操作,不用对扩展表进行事件的监听处理。