我有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一个属性?在暴露关系时没有得到整个对象。
答案 0 :(得分:0)
请改为查看JMSSerializer @Groups注释(http://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies#creating-different-views-of-your-objects)
因此,您不需要使用ExclusionPolicy和Expose作为排除策略