Laravel 在哪里操作数据?

Laravel 在哪里操作数据?,laravel,laravel-5,Laravel,Laravel 5,我的控制器调用一个存储库,该存储库从模型中获取数据,然后将数据沿链返回给控制器,控制器将数据输出到视图中 我应该在哪里对这些数据进行操作?例如,我可能希望向数据中添加一个随机对象: //Controller $data = $this->repository->getAllRows(); 这个应该放在哪里?在控制器中?在雄辩的存储库中 $data->splice(0, 5, [$myNewObject]); 这取决于你做这件事的目的。若它和数据直接相关,你们可以把它放在模型

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

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

//Controller
$data = $this->repository->getAllRows();
这个应该放在哪里?在控制器中?在雄辩的存储库中

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

这取决于你做这件事的目的。若它和数据直接相关,你们可以把它放在模型中,或者它和逻辑直接相关,把它放在控制器上。 如果需要,您可以将其保留在模型上,例如:

//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

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

这取决于情况,但通常我喜欢保持模型干净,没有任何逻辑

现在,如果这是一个单独的操作,只需在控制器中执行即可

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

  • 创建一个类,以便您有时可以在内部使用该功能 你的控制器
  • 使用操作数据函数创建控制器,并从中扩展所有控制器
我通常采用最后一种方法,特别是在创建API时,我想创建过滤器来隐藏一些数据

编辑 这是我上一个名为Paka的项目中使用的结构的屏幕截图:

我不明白你为什么两种方法都做不到。谢谢。如果我选择第一个——创建一个类,我会把它放在laravel框架中的什么地方?通常我会在应用程序文件夹中创建一个包含项目名称的文件夹,然后视情况而定,如果它是一个小项目,我只会将类放在该文件夹中,如果它是一个大项目,或者它有许多类,我会为每种类型创建更多的文件夹。我已经用我在上一个项目中使用的结构更新了我的答案。