首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >slug-列'slug‘不能为空

slug-列'slug‘不能为空
EN

Stack Overflow用户
提问于 2017-06-12 18:22:15
回答 0查看 1.9K关注 0票数 3

我正在使用Doctrine,通过StofDoctrineExtensionsBundle与DoctrineExtensions一起使用"Doctrine扩展迟滞“行为自动生成插件。

监听程序似乎已正确注册。实体字段也被标记为可延迟的。

当尝试通过Symfony表单持久化我的实体时,不会发生插件生成。正在引发数据库异常。

例外:

代码语言:javascript
复制
An exception occurred while executing 'INSERT INTO event (startDate, endDate, title, slug, description, image, followers, city, place) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["2017-06-24 20:00:00", "2017-06-26 12:00:00", "Test event name for slug generation", null, "Test", null, null, "Somewhere", "Somewhere else"]:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'slug' cannot be null

版本:

代码语言:javascript
复制
PHP                                  7.0.15
symfony/symfony                      v3.2.9
doctrine/doctrine-bundle             1.6.8
doctrine/orm                         v2.5.6
gedmo/doctrine-extensions            v2.4.29
stof/doctrine-extensions-bundle      v1.2.2 

config.yml

代码语言:javascript
复制
doctrine:
    dbal:
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        charset: UTF8
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

stof_doctrine_extensions:
    default_locale: '%locale%' # pl
    translation_fallback: true
    orm:
        default:
            sluggable: true

实体(Event.orm.xml)

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"
                  xmlns:gedmo="http://Atlantic18.github.io/DoctrineExtensions/schemas/orm/doctrine-extensions-3.0.xsd">
    <entity repository-class="AppBundle\Repository\EventRepository" name="AppBundle\Entity\Event">
        <id name="id" type="integer" column="id">
            <generator strategy="AUTO"/>
        </id>
        <field name="startDate" type="datetime" column="startDate"/>
        <field name="endDate" type="datetime" column="endDate"/>
        <field name="title" type="string" column="title" length="255"/>
        <field name="slug" type="string" column="slug" length="255" unique="true">
            <gedmo:slug unique="true" updatable="true" fields="title" separator="-" />
        </field>
        <field name="description" type="text" column="description" nullable="true"/>
        <field name="image" type="string" column="image" length="255" nullable="true"/>
        <field name="followers" type="integer" column="followers" nullable="true"/>
        <field name="city" type="string" column="city" nullable="false" />
        <field name="place" type="string" column="place" nullable="true" />
    </entity>
</doctrine-mapping>

控制器操作:

代码语言:javascript
复制
    public function createAction(Request $request)
    {
        $form = $this->createForm(EventType::class);

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            /** @var Event $event */
            $event = $form->getData();

            $em = $this->getDoctrine()->getManager();
            $em->persist($event);
            $em->flush();

            $this->addFlash('success', 'event created');
            return $this->redirectToRoute('calendar_event', [
                'slug' => $event->getSlug()
            ]);
        }

        return ['form' => $form->createView()];
    }

完整堆栈跟踪:

代码语言:javascript
复制
[1] Doctrine\DBAL\Exception\NotNullConstraintViolationException: An exception occurred while executing 'INSERT INTO event (startDate, endDate, title, slug, description, image, followers, city, place) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["2017-06-24 20:00:00", "2017-06-26 12:00:00", "Test event name for slug generation", null, "Test", null, null, "Somewhere", "Somewhere else"]:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'slug' cannot be null
    at n/a
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 112

    at Doctrine\DBAL\Driver\AbstractMySQLDriver->convertException('An exception occurred while executing \'INSERT INTO event (startDate, endDate, title, slug, description, image, followers, city, place) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\' with params ["2017-06-24 20:00:00", "2017-06-26 12:00:00", "Test event name for slug generation", null, "Test", null, null, "Somewhere", "Somewhere else"]:SQLSTATE[23000]: Integrity constraint violation: 1048 Column \'slug\' cannot be null', object(PDOException))
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php line 128

    at Doctrine\DBAL\DBALException::driverExceptionDuringQuery(object(Driver), object(PDOException), 'INSERT INTO event (startDate, endDate, title, slug, description, image, followers, city, place) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', array('2017-06-24 20:00:00', '2017-06-26 12:00:00', 'Test event name for slug generation', null, 'Test', null, null, 'Somewhere', 'Somewhere else'))
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php line 177

    at Doctrine\DBAL\Statement->execute()
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php line 281

    at Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts()
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 1014

    at Doctrine\ORM\UnitOfWork->executeInserts(object(ClassMetadata))
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 378

    at Doctrine\ORM\UnitOfWork->commit(null)
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php line 356

    at Doctrine\ORM\EntityManager->flush(null)
        in /project_home/var/cache/dev/appDevDebugProjectContainer.php line 7072

    at DoctrineORMEntityManager_00000000751279ee000000007e7efeea3473a0393d6fcd1415b2fc588e376308->flush(null)
        in /project_home/var/cache/dev/jms_diextra/doctrine/EntityManager_59394e2cc7d86.php line 313

    at EntityManager59394e2cc7d86_546a8d27f194334ee012bfe64f629947b07e4919\__CG__\Doctrine\ORM\EntityManager->flush()
        in /project_home/src/AppBundle/Controller/CalendarController.php line 56

    at AppBundle\Controller\CalendarController->createAction(object(Request))
        in  line 

    at ReflectionMethod->invokeArgs(object(CalendarController), array(object(Request)))
        in /project_home/vendor/jms/cg/src/CG/Proxy/MethodInvocation.php line 84

    at CG\Proxy\MethodInvocation->proceed()
        in /project_home/vendor/jms/security-extra-bundle/Security/Authorization/Interception/MethodSecurityInterceptor.php line 133

    at JMS\SecurityExtraBundle\Security\Authorization\Interception\MethodSecurityInterceptor->intercept(object(MethodInvocation))
        in /project_home/vendor/jms/cg/src/CG/Proxy/MethodInvocation.php line 79

    at CG\Proxy\MethodInvocation->proceed()
        in /project_home/var/cache/dev/jms_diextra/proxies/AppBundle-Controller-CalendarController.php line 21

    at EnhancedProxye0ff800f_2852d4e43776e45f00f38751350397dbf530e575\__CG__\AppBundle\Controller\CalendarController->createAction(object(Request))
        in  line 

    at call_user_func_array(array(object(CalendarController), 'createAction'), array(object(Request)))
        in /project_home/var/cache/dev/classes.php line 4228

    at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
        in /project_home/var/cache/dev/classes.php line 4183

    at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
        in /project_home/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php line 168

    at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
        in /project_home/web/app_dev.php line 28

    at require('/project_home/web/app_dev.php')
        in /project_home/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php line 40

[2] Doctrine\DBAL\Driver\PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'slug' cannot be null
    at n/a
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php line 93

    at Doctrine\DBAL\Driver\PDOStatement->execute(null)
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php line 168

    at Doctrine\DBAL\Statement->execute()
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php line 281

    at Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts()
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 1014

    at Doctrine\ORM\UnitOfWork->executeInserts(object(ClassMetadata))
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 378

    at Doctrine\ORM\UnitOfWork->commit(null)
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php line 356

    at Doctrine\ORM\EntityManager->flush(null)
        in /project_home/var/cache/dev/appDevDebugProjectContainer.php line 7072

    at DoctrineORMEntityManager_00000000751279ee000000007e7efeea3473a0393d6fcd1415b2fc588e376308->flush(null)
        in /project_home/var/cache/dev/jms_diextra/doctrine/EntityManager_59394e2cc7d86.php line 313

    at EntityManager59394e2cc7d86_546a8d27f194334ee012bfe64f629947b07e4919\__CG__\Doctrine\ORM\EntityManager->flush()
        in /project_home/src/AppBundle/Controller/CalendarController.php line 56

    at AppBundle\Controller\CalendarController->createAction(object(Request))
        in  line 

    at ReflectionMethod->invokeArgs(object(CalendarController), array(object(Request)))
        in /project_home/vendor/jms/cg/src/CG/Proxy/MethodInvocation.php line 84

    at CG\Proxy\MethodInvocation->proceed()
        in /project_home/vendor/jms/security-extra-bundle/Security/Authorization/Interception/MethodSecurityInterceptor.php line 133

    at JMS\SecurityExtraBundle\Security\Authorization\Interception\MethodSecurityInterceptor->intercept(object(MethodInvocation))
        in /project_home/vendor/jms/cg/src/CG/Proxy/MethodInvocation.php line 79

    at CG\Proxy\MethodInvocation->proceed()
        in /project_home/var/cache/dev/jms_diextra/proxies/AppBundle-Controller-CalendarController.php line 21

    at EnhancedProxye0ff800f_2852d4e43776e45f00f38751350397dbf530e575\__CG__\AppBundle\Controller\CalendarController->createAction(object(Request))
        in  line 

    at call_user_func_array(array(object(CalendarController), 'createAction'), array(object(Request)))
        in /project_home/var/cache/dev/classes.php line 4228

    at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
        in /project_home/var/cache/dev/classes.php line 4183

    at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
        in /project_home/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php line 168

    at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
        in /project_home/web/app_dev.php line 28

    at require('/project_home/web/app_dev.php')
        in /project_home/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php line 40

[3] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'slug' cannot be null
    at n/a
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php line 91

    at PDOStatement->execute(null)
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php line 91

    at Doctrine\DBAL\Driver\PDOStatement->execute(null)
        in /project_home/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php line 168

    at Doctrine\DBAL\Statement->execute()
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php line 281

    at Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts()
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 1014

    at Doctrine\ORM\UnitOfWork->executeInserts(object(ClassMetadata))
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 378

    at Doctrine\ORM\UnitOfWork->commit(null)
        in /project_home/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php line 356

    at Doctrine\ORM\EntityManager->flush(null)
        in /project_home/var/cache/dev/appDevDebugProjectContainer.php line 7072

    at DoctrineORMEntityManager_00000000751279ee000000007e7efeea3473a0393d6fcd1415b2fc588e376308->flush(null)
        in /project_home/var/cache/dev/jms_diextra/doctrine/EntityManager_59394e2cc7d86.php line 313

    at EntityManager59394e2cc7d86_546a8d27f194334ee012bfe64f629947b07e4919\__CG__\Doctrine\ORM\EntityManager->flush()
        in /project_home/src/AppBundle/Controller/CalendarController.php line 56

    at AppBundle\Controller\CalendarController->createAction(object(Request))
        in  line 

    at ReflectionMethod->invokeArgs(object(CalendarController), array(object(Request)))
        in /project_home/vendor/jms/cg/src/CG/Proxy/MethodInvocation.php line 84

    at CG\Proxy\MethodInvocation->proceed()
        in /project_home/vendor/jms/security-extra-bundle/Security/Authorization/Interception/MethodSecurityInterceptor.php line 133

    at JMS\SecurityExtraBundle\Security\Authorization\Interception\MethodSecurityInterceptor->intercept(object(MethodInvocation))
        in /project_home/vendor/jms/cg/src/CG/Proxy/MethodInvocation.php line 79

    at CG\Proxy\MethodInvocation->proceed()
        in /project_home/var/cache/dev/jms_diextra/proxies/AppBundle-Controller-CalendarController.php line 21

    at EnhancedProxye0ff800f_2852d4e43776e45f00f38751350397dbf530e575\__CG__\AppBundle\Controller\CalendarController->createAction(object(Request))
        in  line 

    at call_user_func_array(array(object(CalendarController), 'createAction'), array(object(Request)))
        in /project_home/var/cache/dev/classes.php line 4228

    at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
        in /project_home/var/cache/dev/classes.php line 4183

    at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
        in /project_home/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php line 168

    at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
        in /project_home/web/app_dev.php line 28

    at require('/project_home/web/app_dev.php')
        in /project_home/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php line 40
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44497079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档