【发布时间】:2016-02-21 14:21:26
【问题描述】:
我想按名称排序显示我的类别树。我有一个 CategoryType 来创建新的 Category 实体并使用选择框为其分配父 Category。这是我的表单类型:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', TextType::class, array("required" => false));
$builder->add('parent', EntityType::class, array(
'class' => 'CAPShopAdminBundle:Category',
'choice_label' => 'selectBoxName',
'placeholder' => '-- Aucune --',
'required' => false,
'query_builder' => function(NestedTreeRepository $r) {
return $r->createQueryBuilder('c')
->orderBy('c.root, c.lvl, c.name', 'ASC');
}
));
$builder->add('save', SubmitType::class);
}
结果如下:
我搜索这个结果:
是否可以不使用 PHP 处理,只使用良好的 SQL 查询?
【问题讨论】:
-
我认为你只需要多点订单就可以了。
-
嗯,正如我所说,我已经尝试了我所知道的一切......
-
你确定
->orderBy('c.root, c.lvl, c.name', 'ASC');是正确的吗?你试过没有c.lvl,比如->orderBy('c.root, c.name', 'ASC');吗? -
c.lvl 是确保节点层次结构所必需的。
标签: php symfony doctrine-orm tree