0

私は機能を持っています

private function updateCharacters($oApiKeyInfo) // argument is base entity
{
    $aXmlCharacter = $this->fXml->getXmlRowset($this->oXml, 'row');
    // insert new
    foreach ($aXmlCharacter as $oXmlCharacter)
    {
        $loopData = $this->fXml->getXmlAttributesAsArray($oXmlCharacter);

        $oApiKeyInfoCharacters = new apiKeyInfoCharacters();

        $oApiKeyInfoCharacters
                ->setKeyID($this->keyID)
                ->setCharacterID($loopData['characterID'])
                ->setCharacterName($loopData['characterName'])
                ->setCorporationID($loopData['corporationID'])
                ->setCorporationName($loopData['corporationName'])
                ->set_apiKeyInfo_byKeyID($oApiKeyInfo);


        $this->em->persist($oApiKeyInfoCharacters);
    }

// $this->em->flush() is in main (public) function
}

しかし、それは重複を作成します...そして、dbには$aXmlCharacter(配列)にあるエントリのみがあり、他のエントリは削除する必要があることを望みます

上記のコードは新しいエントリを追加するだけですが、以前のエントリを削除する必要があります

誰かがそれに対処するのを助けることができますか? 実際の例を示してください

4

1 に答える 1

1

重複するエントリ私はuniquenesの定義を見ることができません。
ドキュメントに示されているように、Objectvomデータベースの削除は簡単です。

$product = $em->getRepository('YourBundle::apiKeyInfoCharacters')->find($id);
$em->remove($product);
$em->flush();

しかし、なぜ更新する代わりに既存のものを削除したいのですか?

于 2013-02-03T21:49:39.013 に答える