原则 2:来自一个 db 字段的多个对象属性



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

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

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

/**
 * @var array
 * @ORMColumn(type="EncryptedData", name="data")
 */
private $data;
/**
 * @var string
 * @ORMColumn(type="text", name="data")
 */
private $encryptedData;

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

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

/**
 * @var array
 * @ORMColumn(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;
}

您收到重复字段错误,因为这两个字段在注释中都称为"数据"。如果要在数据库表中同时包含这两个字段,请尝试如下操作:

/**
 * @var array
 * @ORMColumn(type="text", name="data")
 */
private $data;
/**
 * @var string
 * @ORMColumn(type="text", name="encrypteddata")
 */
private $encryptedData;
也就是说,在

安全方面,将敏感的未加密数据存储在数据库中不是一个好主意。

希望对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新