Sonata Admin - 更改订单父类别

nie*_*lsv 5 php parent categories symfony sonata-admin

在我的webapplication中,我有以下类别结构:

<?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;
}
Run Code Online (Sandbox Code Playgroud)

类别可以是父类别或父类别.

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

如何在Sonata Admin中轻松实现?

Bal*_*ala 1

该模型是自连接关系(多对一)。

即使您只想更改父类别的订单,您也需要再创建一个字段,如下所示。

 /**
 * @var integer
 *
 * @ORM\Column(name="sort", type="integer", options={"unsigned"=true})
 */
 private $sort = 0; 
Run Code Online (Sandbox Code Playgroud)

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