Laravel:模型中的功能

时间:2015-08-21 09:36:30

标签: php laravel laravel-4 laravel-5

我问自己,我是否正在以正确的方式做事。这是我的担忧:

我有这样的用户模型

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?

感谢您的推荐

1 个答案:

答案 0 :(得分:2)

对我而言,这取决于应用的大小。如果它是一个简单的应用程序,它将需要很少的维护和基本的Eloquent查询,那么确保将它们保留在模型中 - 在一个小应用程序中困扰自己的重点是什么?

如果您的应用程序将不断维护并且规模较大,那么我将导致存储库设计,这样您可以保持一切井井有条,维护更容易,并且与您自己一起工作的任何其他人都可以找到相对的方式更轻松。

就个人而言,我喜欢使用大型应用程序,但我将更高级的复杂查询拆分为每个查询的专用类,并将其从存储库中删除。这对我来说更容易维护。

控制器明智,我个人更喜欢保持我的控制器' skinny'但是一个简单的Eloquent查询不会伤害任何东西,例如:

public function view($id) 
{
    return view('view-user')->with('user', User::find($id))
}

最终取决于您的应用范围。