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
这可能不是确切的答案。您必须在这里提供确切的案例。这取决于情况,但通常我喜欢保持模型干净,没有任何逻辑 现在,如果这是一个单独的操作,只需在控制器中执行即可 如果这是一项常见任务,并且您希望与其他控制器共享该任务,则有两个选项:
- 创建一个类,以便您有时可以在内部使用该功能 你的控制器
- 使用操作数据函数创建控制器,并从中扩展所有控制器
我不明白你为什么两种方法都做不到。谢谢。如果我选择第一个——创建一个类,我会把它放在laravel框架中的什么地方?通常我会在应用程序文件夹中创建一个包含项目名称的文件夹,然后视情况而定,如果它是一个小项目,我只会将类放在该文件夹中,如果它是一个大项目,或者它有许多类,我会为每种类型创建更多的文件夹。我已经用我在上一个项目中使用的结构更新了我的答案。