} catch (QueryException $e) {
DB::rollBack();
if (условие по которому видно что запись уже есть) {
throw new NonUniqueValueException();
} else {
throw $e;
}
}
и тогда потом в контроллере можно будет
try {
$productCreateService->store($retail->id, $request->getDto());
}catch(NonUniqueValueException $e){
// пишем юзеру
}