api - Symfony - 如果找不到实体,则添加回调
问题描述
我几天都在为某事苦苦挣扎。我正在使用存储有关食品数据的 API。我想做的是:
- 用户正在寻找产品(使用条形码)
- 我们在数据库中搜索产品
- 如果什么都没有找到,那么我们访问 API 来检索信息并将它们保存在数据库中
- 然后我们像往常一样处理加载的实体
如果实体在数据库中不存在,是否有办法(事件或其他)添加行为?
提前致谢
解决方案
未经测试的代码来说明流程。
在您的存储库中:
public function findByEAN(string $ean): Product
{
$product = $this->findOnyBy(['ean' => $ean]);
if ($product === null) {
throw new EntityNotFoundException(sprintf('No Product with EAN %s', $ean);
}
return $product;
}
在您的控制器操作中:
try {
$product = $this->getEntityManager()->getRepository(Product::class)->findByEan($request->get('ean'));
} catch (EntityNotFoundException $e) {
$product = '' ; // fetch product via api and store in DB
}
return $product;
推荐阅读
- bash - Bash如何从参数解析关联数组?
- python - 如何过滤和限制 PyTube 下载的文件大小?
- javascript - 在shopify中用积分付款之前不要创建新订单?
- c# - Partials 是在 ASP.net MVC 中创建向导模板的好方法吗?
- php - PHP Symfony X.509 身份验证
- spring-boot - 登录 NullPointerException 时 Spring Security 无法访问 userService
- javascript - 如何制作一个动态 JSON.parse() 函数来解析本地存储中所有声明的项目
- prestashop - 如何在自定义模块的视图中列出产品?(PS 1.7)
- objective-c - Swift 和@objc 方法:如何转换一个方法以便它可以由@objc 表示?
- amazon-web-services - 当通过 SAM 使用 HttpApi 时,OpenApi 定义是唯一的事实吗?