JMSSerializerbundle @expose关系,忽略其他实体策略

时间:2015-07-12 23:44:31

标签: symfony jmsserializerbundle

我有2个实体。

StockItem和用户。

他们看起来像这样。

/**
 * StockItem
 *
 * @ORM\Table()
 * 
 * @ORM\Entity(repositoryClass="IREnterprise\AppBundle\Entity\StockItemRepository")
 * @ORM\HasLifecycleCallbacks
 *
 * @ExclusionPolicy("all")
 *
 */
class StockItem
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @Expose
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="IREnterprise\UserBundle\Entity\User", inversedBy="stockItems")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     * @Expose
     **/
    private $user;
    ...


/**
 * User
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="IREnterprise\UserBundle\Entity\UserRepository")
 *
 * @UniqueEntity("email")
 * @UniqueEntity("username")
 *
 * @ExclusionPolicy("all")
 *
 */
class User extends BaseUser
{

    const ROLE_CLIENT = 'ROLE_CLIENT';
    const ROLE_WORKER = 'ROLE_WORKER';

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="company", type="string", length=255)
     * @Expose
     */
    private $company;
    ....

如您所见,两个实体都具有ExclusionPolicty all,现在如果我对StockItem执行查询,我获得完整的User对象,则忽略User对象自己的排除策略。

即使只有1个属性“公司”在用户实体中公开。

是否有可能在关系中@Expose一个属性?在暴露关系时没有得到整个对象。

1 个答案:

答案 0 :(得分:0)

请改为查看JMSSerializer @Groups注释(http://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies#creating-different-views-of-your-objects

因此,您不需要使用ExclusionPolicy和Expose作为排除策略