Php 如何获取相关表的对象
我使用DQL的查询是:Php 如何获取相关表的对象,php,symfony,doctrine,Php,Symfony,Doctrine,我使用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->
$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都没有返回
或者有其他方法获取相关表的对象吗?首先,实体的名称是否真的是
产品
,而不是产品
其次,检查类别
的反向映射设置是否正确
我刚刚用完全相同的用例尝试了一个简单的例子,效果很好
$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;
谢谢你的回复。我发现了问题,这让我很沮丧。但只有在这种情况下,当我抛掷大物体时,我的实体与关系也是如此。Skipt停了下来,或者什么的,再也不继续了。因此,当我删除这些转储时,它可以正常工作
也许,Enterx的评论中可能有一个用于转储大型对象的可行解决方案,但我无法尝试,因为我的应用程序位于远程服务器上,我无法访问php.ini。显示您的错误日志。启用的错误报告应解决白页问题;)日志中没有任何内容,错误报告设置为E_ALL。我不知道,原因是否是物体太大。无论如何,这很奇怪:/No var\u dump输出?也许是一个例外导致你在别处执行死刑?是否尝试将ini值error_reporting设置为true并关闭输出缓冲?