Gedmo树可用于项目和子产品等。但是我遇到的情况是我在产品和类别(多对多)之间建立了连接表。
每个产品可以通过许多类别进行连接。每个类别可以有许多产品。在我的产品视图中,有一个选项可以连接多个类别。
我遇到的问题有点难以解释。 我有一个包含所有类别的视图,其中一个类别可以包含子类别。
cat1(显示产品)
1.1 cat1-1(显示产品)
1.2 cat1-2(显示产品)
每个类别,甚至子类别都有一个链接,该链接打开一个包含所有与产品相关的新页面。 我需要找到一种基于theire类别对这些产品进行排序的方法,这就是我正在尝试使用Gedmo Tree进行的处理。
请参见下面的实体,即连接实体。
问题在于Gedmo不会区分您所在的类别。它只是继续计算 lft 和 rgt 。
我希望我已经清楚地描述了我的问题,并且有人可以解决。
也许我可以使用Gedmo treeRoot?但是不知道treeRoot可以在哪里使用
<?php
/**
* ProductCategory
*/
namespace XBS\AppBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* ProductCategory
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductCategoryRepository")
* @Gedmo\Tree(type="nested")
* ...
*/
class ProductCategory
{
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Product", inversedBy="productCategories")
* @Assert\NotNull()
*/
protected $product;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category", inversedBy="productCategories")
* @Assert\NotNull()
*/
protected $category;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category", inversedBy="children" )
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $parent;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Category", mappedBy="parent")
* @ORM\OrderBy({"lft" = "ASC"})
*/
protected $children;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* setProduct
*
* @param null $product
* @return $this
*/
public function setProduct($product = null)
{
$this->product = $product;
return $this;
}
/**
* getProduct
* @return mixed
*/
public function getProduct()
{
return $this->product;
}
/**
* setCategory
*
* @param null $category
* @return $this
*/
public function setCategory($category = null)
{
$this->category = $category;
return $this;
}
/**
* getCategory
* @return mixed
*/
public function getCategory()
{
return $this->category;
}
/**
* @return String empty
*/
public function __toString(){
return '';
}
}