我尝试通过sortable
扩展程序使用学说扩展名gedmo
。我使用composer安装了gedmo-package并按照 the installation in symfony2的说明进行操作。我使用yaml
- 文件作为教义的映射信息。
我的yaml文件:
AppBundle\Entity\Picture:
type: entity
table: pictures
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
[...]
type:
type: string
length: 20
position:
type: string
gedmo:
sortable:
groups: [type]
字段位置确实具有类型int
,但我也尝试了string
,因为这会导致sortable-extension(InvalidMappingException
)的yaml-driver出错。
但我总是得到的错误是Integrity constraint violation: 19 NOT NULL constraint failed: pictures.position
。但是在可排序扩展的所有 examples 中,不需要专门为position-field设置值或在yaml文件中允许null。我还想,InvalidMappingException
应该出现在NOT NULL Exception
之前。
因此我认为甚至没有使用扩展名。 我使用的配置文件:
我的config.yml文件:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: doctrine_extensions.yml}
[...]
我的doctrine_extensions.yml文件:
services:
# KernelRequest listener
gedmo.listener.sortable:
class: Gedmo\Sortable\SortableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ "@annotation_reader" ] ]
答案 0 :(得分:0)
我知道这个问题已经问了很久了,但万一它可以帮助您:根据您使用的版本,您可以尝试以下语法(对我有用):
#Resources/config/doctrine/Entity.orm.yml
[...]
fields:
position:
type: integer
gedmo:
- sortablePosition
,如果您需要按组排序,则需要将其添加到您的关系中(这里是完整的示例):
manyToOne:
parent:
targetEntity: Parent
inversedBy: children
joinColumn:
name: parent_id
referencedColumnName: id
onDelete: cascade
gedmo:
- sortableGroup