【发布时间】:2021-04-18 12:41:15
【问题描述】:
我在我的 Laravel 应用程序中使用存储库模式。 我的问题与我处理存储库和策略模式时重复的 SQL 查询有关。这是一个例子。
// My Controller
public function destroy($id)
{
$this->authorize('delete', $this->repository->find($id));
$this->repository->delete($id);
return back()->with('success', 'Item has been removed');
}
执行上述函数将运行 2 个完全相同的“选择”查询。
第一个是为authorize 函数获取模型时,第二个是在执行删除函数时。
这是这个函数的定义
//repository function
public function delete($id)
{
return $this->find($id)->delete();
}
请注意,我知道为什么要执行 2 个相同的查询。我的问题是如何避免在使用策略和存储库模式时发生这种情况?
我应该将模型传递给我的存储库中的删除功能,因此存储库删除功能将是
//new delete function i my repository class
public function delete($model)
{
return $model->delete();
}
谢谢
【问题讨论】:
标签: laravel repository-pattern policy