symfony2 / doctrine 2 / Mysql:保存为空字符串的空值

时间:2015-04-26 18:53:29

标签: php mysql symfony doctrine-orm

我有一个基本的symfony2表单,我可以为我的字段设置一个值。

我刚刚发现null值保存为空字符串,我希望引发异常,因为不接受thenull值。

我的映射(在特征内):

/**
 * @ORM\Column(name="name", type="string", length=100, nullable=false)
 */
protected $name;

我的领域:

        ->add('name', null, array(
                'label'=>'Nom détaillé',
                'required' => false))

设置为true和定义断言规则的设置效果很好但在这里我正试图解决这个转换问题。

如果我将一个vardumpin置于SetName方法中,我会得到一个空值,后来在我的数据库中保存为空字符串。我该如何解决?

编辑:show create table t

CREATE TABLE `recipe` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `isProduct` tinyint(1) NOT NULL,
 `portions` int(11) DEFAULT NULL,
 `nickname` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `shortDescription` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
 `weight` decimal(10,2) DEFAULT NULL,
 `isPrivate` tinyint(1) NOT NULL,
 `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `slug` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
 `content` longtext COLLATE utf8_unicode_ci,
 `createdAt` datetime NOT NULL,
 `updatedAt` datetime NOT NULL,
 `viewCount` int(11) NOT NULL,
 `parentId` int(10) unsigned DEFAULT NULL,
 `userId` int(10) unsigned DEFAULT NULL,
 `createdBy` int(10) unsigned DEFAULT NULL,
 `updatedBy` int(10) unsigned DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `IDX_DD24B40110EE4CEE` (`parentId`),
 KEY `IDX_DD24B40164B64DCC` (`userId`),
 KEY `IDX_DD24B401D3564642` (`createdBy`),
 KEY `IDX_DD24B401E8DE7170` (`updatedBy`),
 CONSTRAINT `FK_DD24B40110EE4CEE` FOREIGN KEY (`parentId`) REFERENCES `recipe` (`id`) ON DELETE SET NULL,
 CONSTRAINT `FK_DD24B40164B64DCC` FOREIGN KEY (`userId`) REFERENCES `user` (`id`),
 CONSTRAINT `FK_DD24B401D3564642` FOREIGN KEY (`createdBy`) REFERENCES `user` (`id`) ON DELETE SET NULL,
 CONSTRAINT `FK_DD24B401E8DE7170` FOREIGN KEY (`updatedBy`) REFERENCES `user` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

1 个答案:

答案 0 :(得分:0)

好像你只需要对变量添加严格的等价检查===,然后throw new Exception()如果它是空的