Sonata Admin - 更改父级分类的顺序

5
在我的 Web 应用程序中,我有以下类别结构:
<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Category
 *
 * @ORM\Table(name="category", indexes={@ORM\Index(name="fk_category_category_idx", columns={"parent_category_id"})})
 * @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
 */
class Category
{
    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255, nullable=false)
     */
    private $name;

    /**
     * @var boolean
     *
     * @ORM\Column(name="enabled", type="boolean", nullable=false)
     */
    private $enabled = true;

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var \AppBundle\Entity\Category
     *
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="parent_category_id", referencedColumnName="id")
     * })
     */
    private $parentCategory;
}

一个分类可以是父类别或父类别的子类别。

现在我想添加仅更改父类别显示顺序的可能性。

如何在Sonata Admin中轻松实现这一点?


也许您可以澄清一下您想要实现什么?您是指想添加一些字段用于排序,但仅编辑父类别的排序吗?您是否想编辑在管理列表中显示的类别顺序?还是完全不同的其他事情? - Aurelijus Rozenas
你所做的基本上是一个多对一的自引用。在Doctrine文档(https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/association-mapping.html#one-to-many-self-referencing)中有一个关于Category实体的示例。现在关于你的问题,你能再清楚一点吗? - fgamess
1个回答

1
这个模型是自引用且具有(多对一)的关联关系。
即使您只想更改父类别的顺序,您仍需要创建以下一个字段。
 /**
 * @var integer
 *
 * @ORM\Column(name="sort", type="integer", options={"unsigned"=true})
 */
 private $sort = 0; 

该字段将具有默认排序值为0,您可以按sort列的DESC排序。因此,较高价值的父类别将位于顶部,并根据排序值进行排序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接