在哪里操作数据?

时间:2015-06-05 15:37:41

标签: laravel laravel-5

我的控制器调用一个从模型中获取数据的存储库,然后将其返回到控制器,控制器在视图中输出数据。

我应该在哪里操作这些数据?例如,也许我希望在数据中添加一个随机对象:

$data->splice(0, 5, [$myNewObject]);

这应该去哪儿?在控制器?在雄辩的存储库中?

{{1}}

2 个答案:

答案 0 :(得分:1)

取决于你正在做什么。如果它与数据直接相关,您可以将其放在模型中,或者直接与逻辑相关,将其保存在控制器上。 如果您需要,可以将它保留在模型上:

//on model
function getRecentRows()
{
    $data = .....
    return $data->splice(0, 5, [$myNewObject]);
}

如果

,您将把它保留在控制器上
//on controller
$data = $this->repository->getAllRows();
$data->splice(0, 5, [$myNewObject]);
$datas->each(function($item){
    $item->is_featured = true;
});
//return view with data

这可能不是确切的答案。你必须在这里提供确切的案例。

答案 1 :(得分:1)

这取决于,但一般来说,我喜欢保持我的模型干净,没有任何逻辑。

现在,如果这是一个动作,只需在控制器中执行。

如果这是一项常见任务,并且您希望与其他控制器共享它,则有两种选择:

  • 创建一个类,以便有时可以使用该功能 您的控制器
  • 使用您的操作数据功能创建一个控制器,并从中扩展所有控制器。

我通常采用最后一个,特别是在创建API时,我想创建过滤器来隐藏一些数据。

修改

这是一个截面,其结构用于我上一个名为Paka的项目: enter image description here