我使用SyliusResourceBundle作为独立程序包,通过API公开数据。
当我请求与某些其他实体有关系的实体时,我总是得到包含所有相关实体属性的完整响应。这导致了大量的JSON响应,以及在客户端下载的数据太多。
通常情况下,如果我的实体有这样的$ user属性:
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="object")
*/
private $user;
当我请求对象时,我在API响应中获取所有用户的内容:姓名,电子邮件等。
有没有办法只获得我需要的属性/实体列表?喜欢注释或什么?
由于
答案 0 :(得分:0)
作为记录,SyliusResourceBundle使用JMSSeriliazerBundle,因此这只是资源实体中的排除策略问题。
我只需要排除实体级别的所有字段,而只公开我需要的字段:
namespace AppBundle\Entity;
use JMS\Serializer\Annotation as JMS;
use Sylius\Component\Resource\Model\ResourceInterface;
use Doctrine\ORM\Mapping as ORM;
/**
*
* @JMS\ExclusionPolicy("all")
*/
class MyResource implements ResourceInterface
{
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="object")
*/
private $user;
/**
* @ORM\Column(type="string")
* @JMS\Expose()
*/
private $name;
}
请参阅文档here。