检查Doctrine2中的两列重复

时间:2019-05-28 10:25:56

标签: php json symfony doctrine-orm duplicates

我编写了一个API调用,用于提取MainTable中的.json文件。

在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 :(得分:0)

您可以使用

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
 */