0

Doctrine2エンティティに1つのdbフィールドの複数の表現を含めることは可能ですか?

実例:データベースフィールドに暗号化されたオブジェクトがあります。そのフィールドをオンザフライで復号化するための特別なデータ型を作成しました。ここで、dbから選択した後、エンティティに暗号化された値と復号化された値の両方を含める必要があります。

私はその問題をこのように解決しようとしました:

/**
 * @var array
 * @ORM\Column(type="EncryptedData", name="data")
 */
private $data;

/**
 * @var string
 * @ORM\Column(type="text", name="data")
 */
private $encryptedData;

しかし、doctrineは重複フィールドに関するエラーを生成します。

4

2 に答える 2

2

それでも、データベースには 1 つのフィールドが必要ですか? 次のようなものが必要です。

/**
 * @var array
 * @ORM\Column(type="EncryptedData", name="data")
 */
private $data;

private $encryptedData;

public function getData()
{
    return $this->data;
}

public function getEncryptedData()
{
    if ($this->encryptedData === null) {
        // do with that data whatever you need
        $this->encryptedData = processSomehow($this->data);
    }

    return $this->encryptedData;
}
于 2012-12-07T11:08:53.243 に答える
0

注釈では両方のフィールドが「データ」と呼ばれているため、重複フィールド エラーが発生しています。データベース テーブルに両方のフィールドが必要な場合は、次のようにしてください。

/**
 * @var array
 * @ORM\Column(type="text", name="data")
 */
private $data;

/**
 * @var string
 * @ORM\Column(type="text", name="encrypteddata")
 */
private $encryptedData;

とはいえ、暗号化されていない機密データをデータベースに保存することは、セキュリティ上の観点からは良い考えではありません。

それが役に立てば幸い。

于 2012-12-07T11:14:25.683 に答える