我有一个带有 REST API 的应用程序,我想在其中使用瘦控制器并将所有业务逻辑放入服务类中。然而,索引方法存在一个问题,即使用 ORM 来构建查询。由于必须附加许多其他表(包括具有聚合的表),因此会获得非常大的查询。多态实体的一切都特别糟糕。这一切都是在请求级别完成的,而不是模型链接。有必要对附加字段的数据库进行排序。在我看来,将所有这些转移到服务中是不对的,将其留在控制器中更是如此。
我不想将所有这些逻辑移到模型中,因为考虑到已经在那里实现的过滤方法,这会使模型变得太重。我正在寻找有助于卸载模型并将查询构建和过滤逻辑移动到另一个地方的模式。解决这个问题的方法有哪些?
如果您使用 Eloquent,请使用它的功能。在你的情况下,这是
scopes. 为了在单独的类中取出单独的方法,不需要一些巧妙的模式。只需将它们带到trait或定制即可Query Builder。可能会建议您使用所谓的
Repository或Queries类。Eloquent但使用或ActiveRecord不会获得任何利润。相同的scopes,只是名称不同,并使一切变得复杂。scopes比这些“存储库”类更容易理解。更重要的是,它们与存储库模式无关。