将数据传递到视图时 MVC 模式的正确方法


Proper way of MVC pattern when passing data to View?

我目前正在阅读正确的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

相关文章: