我正在阅读正确的MVC,我正在重构当前项目的一些代码。它是用Laravel编写的。我已经将问题简化为:
我有一个域对象'User'和'Log'。用户有很多日志。
用户域对象:
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的方式,如果没有,那么正确的方法是什么?
答案 0 :(得分:1)
是的,这是在Laravel和MVC中做事的正确方法。 calcHoursPerDay()
应该是User或Log模型的一部分。另外,看看范围doc,我想这就是你想要使用的东西: