我有两个模型X和Y。对于这些模型,我还有一个服务和存储库。
其结构为:
| App
|| Http
||| Controller
|||| XController
|||| YController.php
| Service
|| XService.php
|| YService.php
| Repository
|| XRepository.php
|| YRepository.php
现在我有了第三个控制器Z(与模型断开)。
| App
|| Http
||| Controller
|||| XController
|||| YController.php
|||| ZController.php <!--- THIS
| Service
|| XService.php
|| YService.php
| Repository
|| XRepository.php
|| YRepository.php
在ZController中,我必须通过两个服务(XService和YService)调用create方法。
class ZController extends Controller
{
protected XService $XService;
protected YService $YService;
public function __construct(XService $XService, YService $YService)
{
$this->XService = $XService;
$this->YService = $YService;
}
public function store(Request $request): JsonResponse
{
$x = $this->XService->create();
$y = $this->YService->create();
}
}
我遇到的问题是:如果$y的服务失败(异常),我还必须删除$x的插入。2如果我输入DB::transaction,当它是一个移植到其他事务的事务时,它会产生一个错误。3我可以应用什么解决方案?
另外,try catch可以在仓库或服务中应用吗?或者在特定情况下同时应用?
1条答案
按热度按时间ioekq8ef1#
PHP不支持多重继承,但通过使用PHP中的接口或使用PHP中的特性而不是类,Laravel也是如此,如果你不想通过制作仓库,那么你可以使用简单的特性来完成任务。