Проверка двух столбцов в Doctrine2 - PullRequest
0 голосов
/ 28 мая 2019

Я написал вызов API, который извлекает файл .json в MainTable.

В LangTable у меня есть 3 языка, и я извлекаю данные json для каждого языка.

Данные Json имеют поле ключа и локали для заполнения.

Чтобы избежать дублирования, не должно быть дублированного ключа <-> значений локали, поэтому его следует проверять для каждого ключа.

Как проверить это перед сохранением базы данных?

Код ниже работает. Теперь мне нужно добавить упомянутую логику.

Кто-нибудь может помочь?

    $file = file_get_contents('translation.json');
    $jsonData = json_decode($file, true);

    $findLanguage = $this->getLangTableRepository()->findAll();

    foreach ( $findLanguage as $locale) {
        foreach ($jsonData as $data) {
            $newTranslation = new MainTable();
            $newTranslation->setKey($data);
            $newTranslation->setLocale($locale->getLocale());
            $this->em->persist($newTranslation);
        }
    }

    $this->em->flush();

    dump('done!');die;

1 Ответ

0 голосов
/ 28 мая 2019

Вы можете использовать

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

UniqueEntity, чтобы добавить ограничение об уникальности, например:

/**
 * @ORM\Table(name="entity") 
 * @ORM\Entity(repositoryClass="App\MainBundle\Entity\EntityRepository")
 * @UniqueEntity(fields={"attributeA"}, message="Attribute A already exists
 */
...