Doctrine2:来自一个db字段的几个对象属性

时间:2012-12-07 10:54:43

标签: php symfony doctrine-orm

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

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

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

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

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

但是,学说会产生有关重复字段的错误。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

您收到重复字段错误,因为这两个字段在注释中称为“数据”。如果您想在数据库表中同时使用这两个字段,请尝试以下操作:

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

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

也就是说,将敏感的未加密数据存储在数据库中并不是一个好主意。

希望它有所帮助。