具有存储库模式的Laravel策略
我正在我的Laravel应用程序中使用存储库模式。 我的问题与处理存储库和策略模式时重复的SQL查询有关。这里有一些例子具有存储库模式的Laravel策略,laravel,repository-pattern,Laravel,Repository Pattern,我正在我的Laravel应用程序中使用存储库模式。 我的问题与处理存储库和策略模式时重复的SQL查询有关。这里有一些例子 // My Controller public function destroy($id) { $this->authorize('delete', $this->repository->find($id)); $this->repository->delete($id); return back()->with(
// 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
函数的模型时,以及在执行delete函数时获取第二个模型时。
下面是此函数的定义
//repository function
public function delete($id)
{
return $this->find($id)->delete();
}
请注意,我知道为什么会执行两个相同的查询。我的问题是,在使用策略和存储库模式时,如何避免这种情况发生
我是否应该将模型传递给我的存储库中的delete函数,以便存储库删除函数
//new delete function i my repository class
public function delete($model)
{
return $model->delete();
}
感谢控制器中的您:
public function destroy(Link $link)
{
$this->authorize('delete', $link);
$this->repository->delete($link);
return back()->with('success', 'Item has been removed');
}
是的,在存储库的删除功能中,您可以直接编写$model->delete();
这将使您的2个select查询减少到1个。感谢您的重播,您是否建议在控制器中使用DEPANDANCE INPURCE with delete方法并使用存储库路径?在您的场景中,我必须使用存储库和模型