2014-10-09 70 views
0

我经常会对创建函数的模型感到困惑。让我试着用一个简单的示例来解释我目前的情况:这属于哪个模特?

我有一个Log模型,其中包含我们的应用程序的所有活动。我想要获取特定用户的活动。我应该在User模型还是Log模型中创建getActivity($userId)函数?

+0

你应该写在 - 日志模型 – Khushboo 2014-10-09 07:47:15

+0

如果我是你,我会把日志模型中的getActivity功能 – justrohu 2014-10-09 07:47:24

+1

你只有* 1 *模型。多个“模型”不是一件事。你可能并且应该在你的模型中有几个*类*,但是你从来没有真的有好几个模型。 – deceze 2014-10-09 07:49:40

回答

1

为什么不是两个?

当然,最重要的是避免代码重复,因为这很难维护 - 而且是一个难看的解决方案。

日志模型可能包含一个名为getActivity()的方法,该方法提取所有活动(或基于分页和/或日志级别所需的任何参数)。此外,为了自我记录的目的,创建一个名为getUserActivity($userId)的方法 - 这种方法有望看起来很自然。

用户模型现在可以含有一种叫getActivity()方法(同样,有需要的分页任何参数和/或日志级别),这反过来又调用您的日志模型getUserActivity()方法。

这是最明智的选择吗?

好吧,从来没有任何问题的单一解决方案 - 但我喜欢这个解决方案是,你现在有可能分开每个模型的逻辑,但仍然有一个可见的和功能之间的联系他们。其次,你知道有可能通过简单的方式链接User对象来记录活动。

+0

为了记录,'getActivity'和'getUserActivity'可以是相同的方法,但有一个正确的参数,但我很喜欢为每个用例分配逻辑和命名。 – Repox 2014-10-09 08:01:39

0

由于函数中主要使用的数据库将是"Log"之一,因此应将其放置在Log模型中。