如何防止序列化相关User对象的所有数据

时间:2013-05-27 07:46:24

标签: php symfony

我有一个与CreditCard实体相关的实体User

/**
 * CreditCard
 *
 * @ORM\Table(name="credit_card")
 * @ORM\Entity
 */
class CreditCard
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="value", type="string")
     */
    protected $value;

    /**
     * @var User
     *
     * @ORM\OneToOne(targetEntity="User", mappedBy="creditCard")
     */
    protected $user;

}

当我序列化CreditCard实体时,它还会使用密码等用户数据序列化user字段。

{{ creditCard|serialize }}

给出:

{"id":70,"value":"1721742","user":{"id":1,"username":"1721742","email":"hsz@domain.tld","enabled":true,"salt":"xxx","password":"yyy","last_login":"2013-05-27T09:18:30+0200","locked":false, ..... } }

如何阻止它仅允许序列化id username实体的User,{{1}}?

1 个答案:

答案 0 :(得分:0)

实现serializable接口并在serialize()方法中取消设置用户界面。

使用此接口,您可以编写自己的serialize()和unserialize()方法,这些方法将自动调用,因此您可以实现任何您想要的任何方法