我目前正在阅读正确的MVC,并且正在重构当前项目的一些代码。它是用拉拉维尔写的。我将问题简化为:
我有一个域对象"用户"和"日志"。一个用户有许多日志。
用户域对象:
class User extends Authenticatable implements UserInterface
{
protected $fillable = ['surname', 'name','email'];
protected $hidden = [
'password', 'remember_token',
];
public function logs()
{
return $this->hasMany('App'Models'Log');
}
}
日志域对象:
class Log extends Model implements LogInterface
{
public $timestamps = false;
protected $fillable = [
'log_date',
'log_hours',
'log_minutes'
];
protected $dates = ['log_date'];
public function user()
{
return $this->belongsTo('App'Models'User');
}
}
在我看来,我想显示某一天记录的总小时数。我目前正在我的控制器中注入一个类,该类具有一个方法 calcHoursPerDay($user_id),该方法注入 LogRepository 以获取该用户在给定日期的日志并将计算值返回到视图。
阅读正确的MVC,我倾向于放弃类并为我的用户域对象创建一个名为HoursOnDay($date)的方法。因此,在模型中保留业务逻辑。
这是使用 MVC 的方式吗?如果不是,正确的方法是什么?
是的,这是在Laravel和MVC中做事的正确方法。 calcHoursPerDay()
应该是用户或日志模型的一部分。另外,看看范围文档,我想这就是你想使用的:
https://laravel.com/docs/5.1/eloquent#query-scopes