непроверенный код для иллюстрации потока.
в вашем хранилище:
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;