Symfony - добавьте обратный вызов, если объект не найден - PullRequest
0 голосов
/ 23 октября 2019

Я борюсь с чем-то в течение нескольких дней. Я использую API, который хранит данные о продуктах питания. Что я хотел бы сделать:

  1. Пользователь ищет продукт (используя штрих-код)
  2. Мы ищем продукт в базе данных
  3. Еслиничего не найдено, затем мы достигаем API для извлечения информации и сохраняем их в базе данных
  4. И затем мы обрабатываем как обычно с загруженной сущностью

Есть ли способ (событие или другое) добавить поведение в случае, если сущность не существует в БД?

Заранее спасибо

1 Ответ

0 голосов
/ 23 октября 2019

непроверенный код для иллюстрации потока.

в вашем хранилище:

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;
...