我遇到了问题,我恐怕错过了一些愚蠢的事情。但我正在努力寻找类似的问题,看看我错过了什么。
无论如何,我有一个产品实体:
<?php
class Product {
private $productid;
private $name;
/**
* @ORM\ManyToOne(targetEntity="MyNamespace\CategoryBundle\Entity\Category")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="categoryid", referencedColumnName="categoryid")
* })
*/
private $category;
public function getCategoryPath()
{
$category = $this->category;
$items = array($category);
var_dump($category->getParent());
while (null !== $category->getParent()) {
$category = $category->getParent();
$items[] = $category;
}
return $items;
}
}
class Category {
private $categoryid;
private $name;
/**
* @var \Category
*
* @ORM\ManyToOne(targetEntity="MyNamespace\CategoryBundle\Entity\Category")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="parentid", referencedColumnName="categoryid")
* })
*/
private $parent;
public function getParent()
{
return $this->parent;
}
}
?>
我试试:
<?php
$product = $entityManager->find('MyNamespaceProductBundle:Product', 10);
$categories = $product->getCategoryPath();
?>
问题是,categories数组只包含直接链接的类别。看起来似乎没有学说取得父类,所以$ category-&gt; getParent()将始终返回null,如果我查看mysql-general日志,我看不到为父类别引发的查询。
我做错了什么?
答案 0 :(得分:0)
我的猜测是你应该像getCategoryPath()
那样调用Category类中的getCategoryid()
方法,然后返回categoryid
值。然后:
<?php
$product = $entityManager->find( 'MyNamespaceProductBundle:Product', 10 );
$category = $product->getCategoryid();
$categoryProducts = $entityManager->find( 'MyNamespaceCategoryBundle:Product',array( 'categoryid' => '$category' ) );
?>