0

在 Doctrine2 实体中是否可以有多个表示一个 db 字段?

现场示例:我在数据库字段中加密了对象。我创建了用于即时解密该字段的特殊数据类型。现在,从 db 中选择后,我需要在实体中同时拥有加密和解密的值。

我试图以这种方式解决这个问题:

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

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

但是教义会产生关于重复字段的错误。

4

2 回答 2

2

然而在数据库中应该是一个领域?你需要这样的东西:

/**
 * @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 回答