2013-05-27 27 views
0

的所有數據我有一個實體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":"[email protected]","enabled":true,"salt":"xxx","password":"yyy","last_login":"2013-05-27T09:18:30+0200","locked":false, ..... } } 

如何防止它允許序列化只有id,usernameUser實體?

+0

不知道如果我正確地得到您的問題,但你嘗試:setIgnoredAttributes - 帶有標準器(http://api.symfony.com/master/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.html)。 –

回答

0

執行serializable接口並取消serialize()方法中的用戶界面。

有了這個接口,你寫你自己的序列化()和反序列化()方法將被自動調用,這樣就可以實現任何你想要的

+0

如果我序列化'CreditCard',但是如果我直接序列化'User'實體 - 它會返回整個數據集嗎?是否可以使用此接口實現僅返回'id,username,email'的行爲? – hsz

相關問題