Getter和ManyToOne的关系不起作用

时间:2017-05-31 12:01:37

标签: php symfony doctrine-orm query-builder doctrine-query

我正在研究一个symfony项目,我有一个实体(在这里调用)有几个属性,其中一个是ManyToOne关系:

/**
 * @ORM\ManyToOne(targetEntity="RB\ABundle\Entity\Somethingelse", inversedBy="ent")
 * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
 */
private $smthg

现在我的控制器中有一个吸气剂:

public function getAction($smthg)
{
    $em = $this->getDoctrine()->getManager();
    $ents = $em->getRepository('ABundle:Ent')
        ->createQueryBuilder('p')
        ->where('p.smthg = :smthg')
        ->setParameter('smthg', $smthg)
        ->getQuery()
        ->getArrayResult();
    return new JsonResponse($ents);
}

我的getter工作得很好,除了我没有获得ManyToOne关系的所有属性

我尝试过这样的事情:

public function getAction($smthg)
{
    $em = $this->getDoctrine()->getManager();
    $ents = $em->getRepository('ABundle:Ent')
        ->createQueryBuilder('p')
        ->select('p')
        ->join('p.smthg','pr')
        ->where('p.smthg = :smthg')
        ->setParameter('smthg', $smthg)
        ->getQuery()
        ->getArrayResult();
    return new JsonResponse($ents);
}

但它没有显示'smthg'数据库中的内容。

PS:在数据库中我有正确的信息。他们在那里,我无法得到它们。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

试试这个:

public function getAction($smthg)
{
    $ents = $this->getDoctrine()->getRepository('ABundle:Ent')
        ->createQueryBuilder('p')
        ->select('p', 'pr')
        ->join('p.smthg','pr')
        ->where('p.smthg = :smthg')
        ->setParameter('smthg', $smthg)
        ->getQuery()
        ->getArrayResult();
    return new JsonResponse($ents);
}