来自学说的实体关系只有 return 个 ID
Only return ids for entity relations from doctrine
学说实体:
class Thing
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45)
*/
private $name;
/**
*@ORM\ManyToOne(targetEntity="Project\Bundle\ModelBundle\Entity\ThingGroup", cascade={"persist"})
* @var type
*/
private $thingGroup;
控制器:
public function getThingsByThingGroupAction($id) {
$things= $this->getDoctrine()->getEntityManager()
->getRepository('ProjetModelBundle:Thing')
->findBy(array('thingGroup'=>$id));
return $things;
}
这是 return 事物数组,每个项目内都有整个事物组关系实体。我想以 json 格式将此结果发送到我的客户端,但我不想为每个实体发送整个 ThingGroup,只需要关系的 ID。我可以做一些 DTO 操作来处理这个问题,但是有没有办法直接将 Docrtine 扔到 return 只有关系的 ids?
一种解决方案是使用查询构建器根据您的需要构建查询。但我会推荐一个更好的方法:使用序列化器。您可以使用 JMSSerializerBundle,因为它比 Symfony 附带的序列化程序强大得多。使用 JMSSerializer,您将轻松配置您的实体以公开某些参数、公开方式和时间。
学说实体:
class Thing
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45)
*/
private $name;
/**
*@ORM\ManyToOne(targetEntity="Project\Bundle\ModelBundle\Entity\ThingGroup", cascade={"persist"})
* @var type
*/
private $thingGroup;
控制器:
public function getThingsByThingGroupAction($id) {
$things= $this->getDoctrine()->getEntityManager()
->getRepository('ProjetModelBundle:Thing')
->findBy(array('thingGroup'=>$id));
return $things;
}
这是 return 事物数组,每个项目内都有整个事物组关系实体。我想以 json 格式将此结果发送到我的客户端,但我不想为每个实体发送整个 ThingGroup,只需要关系的 ID。我可以做一些 DTO 操作来处理这个问题,但是有没有办法直接将 Docrtine 扔到 return 只有关系的 ids?
一种解决方案是使用查询构建器根据您的需要构建查询。但我会推荐一个更好的方法:使用序列化器。您可以使用 JMSSerializerBundle,因为它比 Symfony 附带的序列化程序强大得多。使用 JMSSerializer,您将轻松配置您的实体以公开某些参数、公开方式和时间。