【发布时间】:2015-04-26 18:53:29
【问题描述】:
我有一个基本的 symfony2 表单,我可以在其中为我的字段设置一个值。
我刚刚发现空值保存为空字符串,我预计会引发异常,因为不接受空值。
我的映射(在一个特征内):
/**
* @ORM\Column(name="name", type="string", length=100, nullable=false)
*/
protected $name;
我的领域:
->add('name', null, array(
'label'=>'Nom détaillé',
'required' => false))
将 required 设置为 true 并定义断言规则效果很好,但我正在尝试解决此转换问题。
如果我在 SetName 方法中放置一个 vardumpin,我会得到一个空值,该值稍后会在我的数据库中保存为空字符串。我该如何解决?
编辑:节目创建表 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
【问题讨论】:
-
这很清楚。该字段不是可为空的文本,因此 null 转换为空字符串。
-
默认值是多少?你能发布
show create table t的输出吗? -
嗯,这是通常的行为吗?我不应该收到例外吗?或者我怎么能让它抛出异常?
-
您可以使用 Doctrine 事件挂钩和生命周期回调来进行此类错误检查。在此处阅读更多信息doctrine-orm.readthedocs.org/en/latest/reference/events.html
-
或者更确切地说是验证器,如果它是一个表单字段。
标签: php mysql symfony doctrine-orm