1

例如,Gedmo 树可用于项目和子产品等。但是我有一种情况,我在产品和类别(ManytoMany)之间有一个连接表。

每个产品都可以通过许多类别连接起来。每个类别可以有许多产品。在我的产品视图中,可以选择连接多个类别。

我遇到的问题有点难以解释。我有一个包含所有类别的视图,其中一个类别可以有子类别。

  1. cat1(显示产品)

    1.1 cat1-1(显示产品)

    1.2 cat1-2(显示产品)

每个类别,甚至是子类别都有一个链接,可以打开一个包含所有连接产品的新页面。我需要找到一种方法来根据它们的类别对这些产品进行分类,我正在尝试用 Gedmo Tree 做什么。

请参阅下面的实体,该实体是连接实体。

问题是 Gedmo 没有区分您所在的类别。它只是继续计算lftrgt

我希望我已经清楚地描述了我的问题,并且有人有解决方案。

也许我可以使用 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 '';
    }
}
4

0 回答 0