2015-08-21 2 views
0

Я спрашиваю себя, правильно ли я делаю что-то в этом роде. Вот моя забота:Laravel: функции в модели

У меня есть модель пользователя, как этот

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() в модели пользователя? Или это должно быть в контроллере, который генерирует представление? Или мне нужно создать UserRepository?

Спасибо за ваши recommandations

+0

Это должно быть в другой модели, а затем сделать с ними отношения. – aldrin27

+0

Есть также модель действия и модель Step, которые связаны друг с другом. Я хочу, чтобы получить общее расстояние всех шагов, пройденных пользователем. В какой модели вы рекомендуете поставить эту функцию? – bidou88

+0

Я вижу. Поместите это в свой контроллер сейчас, чтобы получить возвращаемый объект. – aldrin27

ответ

2

Для меня это зависит от размера приложения. Если это простое приложение, которое займет очень мало обслуживания и основных запросов Eloquent, то обязательно сохраните их в модели - в чем смысл беспокоиться о маленьком приложении?

Если ваше приложение будет постоянно поддерживаться и иметь большой размер, то я приведу к созданию репозитория, таким образом, вы сохраните все организованное, обслуживание будет проще, а кто-то другой, работающий над проектом, сможет найти свой путь вокруг относительно проще.

Лично в большом приложении Мне нравится иметь репозитории, но разбивать мои более сложные сложные запросы на выделенный класс для каждого запроса и удалять их из репозитория. Для меня это упрощает обслуживание.

Контроллер мудрый, я лично предпочитаю, чтобы мои контроллеры были «тощими». Но простой Eloquent запрос не собирается ничего повредить, например:

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

Это в конечном счете, зависит от объема вашего приложения.

Смежные вопросы