私は問題を抱えており、ばかげたことを見逃しているのではないかと心配しています。しかし、私が見逃しているものを見るために同様の問題を探すのに苦労しています。
とにかく、私は製品エンティティを持っています:
<?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();
?>
問題は、カテゴリ配列に直接リンクされたカテゴリのみが含まれていることです。$category->getParent() は常に null を返し、mysql-general ログを見ると、親カテゴリに対して発生したクエリが表示されません。
私は何を間違っていますか?