首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel,与多个数据库表相关的查询的最佳位置/命名

Laravel,与多个数据库表相关的查询的最佳位置/命名
EN

Stack Overflow用户
提问于 2017-11-27 01:08:50
回答 2查看 86关注 0票数 0

我正在开发一个具有许多雄辩模型的Laravel应用程序。这些雄辩的模型(例如User、Post等)还包含许多仅与模型(通常是原始sql)松散连接的查询。

有些查询是这样的:“从一个表中获取一些信息,从另一个表中获取一些信息,并从第三个表中获取一些信息”。现在,像用户模型这样的模型可以有很多像getAllUncompletedActionsForUsergetSessionsDurationsPerUser这样的方法。我认为,如果一个雄辩的模型有数千行代码,那就不好了。

你对拆分这些模型有什么看法,你会把这些模型放在哪里,以及如何命名返回数据库结果的类,这些类处理许多不同的表?

EN

回答 2

Stack Overflow用户

发布于 2017-11-27 04:14:52

欢迎来到active record模式的瓶颈。这就是为什么这么多人把它称为反模式。

与其试图在同一个类中挤压更多的功能,不如开始将仅与之模糊相关的持久性逻辑转移到独立的data mappers中。

有点像这样:

代码语言:javascript
运行
复制
$user = App\Entity\User::find($id);

$mapper = new App\Mapper\UserActions($dbConnection);
$mapper->fetchIncompleted($users);

var_dump($user->getActions(App\Entity\User::ACTION_INCOMPLTE));

当然,您可能希望使用IoC (如果可能)在给定服务中注入这些映射器,而不必在某个随机位置使用new运算符。

票数 2
EN

Stack Overflow用户

发布于 2017-11-27 03:27:39

您是否考虑过使用Traits

如果由我决定,我会创建一个文件夹App/Traits,并具有例如一个具有getAllUncompletedActionsForUser()功能的UserActions特征。

特征UserActions可以在任何适当的类/模型中使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47498784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档