Сортируемое расширение Doctrine в symfony3 — Ошибка: Not Null

Я пытаюсь использовать расширение доктрины sortable через расширение gedmo. Я установил gedmo-пакет с композитором и следовал инструкциям по установке в 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]

Поле position действительно имело тип int, но я также пробовал string, потому что это должно было вызвать ошибку yaml-драйвера сортируемого-расширения (InvalidMappingException).

Но я всегда получаю ошибку Integrity constraint violation: 19 NOT NULL constraint failed: pictures.position. Но во всех примерах сортируемых extension нет необходимости специально задавать значение для поля position или разрешать null в yaml-файле. Также я предполагаю, что 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" ] ]

person Nico227    schedule 06.10.2016    source источник


Ответы (1)


я знаю, что этот вопрос задавался много лет назад, но на случай, если он может помочь: в зависимости от используемых вами версий вы можете попробовать этот синтаксис (это сработало для меня):

#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
person Anybug    schedule 04.07.2018