我使用DQL的查询是:
$query = $this->_em->createQuery(
'SELECT v, a
FROM MyBundle:Products v
JOIN v.category a WITH a.id = :id
WHERE v.main = 1'
)
->setMaxResults(1)
->setParameters(array('id' => $id));
$result = $query->getOneOrNullResult();
var_dump($result->getCategory()->getId());
请,sombody可以解释一下,为什么var_dump什么都不返回(白页)?我花了很多时间来解决这个问题,但我不明白,这种行为的原因是什么。
我知道,我只能选择类别表的id我需要类别的孔对象。上面的查询只是示例,不返回任何ID。
或者是否有另一种方法来获取相关表的对象?
答案 0 :(得分:0)
首先,实体的名称是Products
而不是Product
吗?
其次,检查是否为category
正确设置了逆映射。
我刚尝试了一个使用完全相同的用例的简单示例,它运行正常。
$em = $this->get('doctrine')->getEntityManager();
$query = $em->createQuery(
'SELECT p, c
FROM TestTestBundle:P p
JOIN p.children c WITH c.id = :id
WHERE p.main = 1'
)
->setMaxResults(1)
->setParameters(array('id' => $id));
if (null !== $result = $query->getOneOrNullResult()) {
foreach ($result->getChildren() as $child) {
var_dump($child->getTitle());
}
}
按照NHG的说法并启用错误报告,这样我们就可以得到一些错误。
这是使用的两个实体的ORM映射。
父母
class P
{
/**
* @ORM\OneToMany(targetEntity="Test\TestBundle\Entity\C", mappedBy="parent")
*/
private $children;
public function getChildren()
{
return $this->children;
}
孩子
class C
{
/**
* @ORM\ManyToOne(targetEntity="Test\TestBundle\Entity\P", inversedBy="children")
*/
private $parent;
答案 1 :(得分:0)
感谢您的所有回复。我发现了问题,这是在我的转储中。但是,以防万一,当我倾倒大对象时,我的实体与关系一样。 Skript停在它上面,或者什么东西,永远不会继续。所以当我删除这些转储时,它可以正常工作。
也许,用于转储大型对象的可行解决方案可以在Enterx的评论中,但我无法尝试,因为我的应用程序位于远程服务器上,我无权访问php.ini。