我问自己,我是否正在以正确的方式做事。这是我的担忧:
我有这样的用户模型
class User extends Model {
public function activities()
{
return $this->hasMany('App\Activity');
}
....
public function getTotalDistanceTraveled() {
return Step::join('activities', 'activity_id', '=', 'activities.id')->where('activities.user_id', $this->id)->sum('steps.km');
}
在用户模型中放置像getTotalDistanceTraveled()这样的函数是正确的吗?或者它应该在Controller中生成View?或者我是否必须创建UserRepository?
感谢您的推荐
答案 0 :(得分:2)
对我而言,这取决于应用的大小。如果它是一个简单的应用程序,它将需要很少的维护和基本的Eloquent查询,那么确保将它们保留在模型中 - 在一个小应用程序中困扰自己的重点是什么?
如果您的应用程序将不断维护并且规模较大,那么我将导致存储库设计,这样您可以保持一切井井有条,维护更容易,并且与您自己一起工作的任何其他人都可以找到相对的方式更轻松。
就个人而言,我喜欢使用大型应用程序,但我将更高级的复杂查询拆分为每个查询的专用类,并将其从存储库中删除。这对我来说更容易维护。
控制器明智,我个人更喜欢保持我的控制器' skinny'但是一个简单的Eloquent查询不会伤害任何东西,例如:
public function view($id)
{
return view('view-user')->with('user', User::find($id))
}
最终取决于您的应用范围。