symfony3中的Doctrine sortable扩展 - 错误:不为空

时间:2016-10-06 13:31:35

标签: doctrine-orm symfony doctrine-extensions

我尝试通过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" ] ]

1 个答案:

答案 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