【问题标题】:Getter and ManyToOne relationship doesn't workGetter 和 ManyToOne 关系不起作用
【发布时间】:2017-05-31 12:01:36
【问题描述】:

我正在做一个 symfony 项目,我有一个实体(这里称为 ent),其中一个属性是多对一关系:

/**
 * @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:在数据库中我有正确的信息。他们在那里,我就是拿不到。

感谢您的帮助

【问题讨论】:

  • 不起作用是什么意思? $ent 不存在,将是 $ents
  • 不是这样,只是这里重写不好,但我的代码中没有这个错误
  • 好的,但指定它的意思是什么不起作用,返回错误?结果错误?
  • 这是一个延迟加载问题。 ->选择('p','pr')
  • @Cerad 很好,谢谢。你先回答了,但是一个人回答了,所以如果你想回答,我会确认你的。如果没有,我会确认他的

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


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多