【发布时间】:2011-08-31 09:07:55
【问题描述】:
我的问题很简单。我有这个模型,我想在其中一个字段 (finRango) 中插入一条具有空值的记录,使用教义 orm 的数据固定装置。这是我尝试过的:
fila41_zona5:
MetodoEnvio: dhl
zona: 5
inicioRango: 20.00
finRango: NULL
precio: 7.15
也试过了:
fila41_zona5:
MetodoEnvio: dhl
zona: 5
inicioRango: 20.00
finRango:
precio: 7.15
甚至:
fila41_zona5:
MetodoEnvio: dhl
zona: 5
inicioRango: 20.00
precio: 7.15
我总是在 finRango 字段中得到一个零 (0.00)。我从数据库架构中定义了我的架构,而这个字段没有用NOT NULL 定义。它是表的主键的一部分,但它可以是NULL(在特定情况下我需要它为空,因为模型代表什么)。这是任务php symfony doctrine:build-schema生成的架构定义:
//An extract from my config/doctrine/schema.yml:
PrecioEnvio:
connection: doctrine
tableName: PrecioEnvio
columns:
idmetodo:
type: integer(4)
fixed: false
unsigned: true
primary: true
autoincrement: false
zona:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
iniciorango:
type: 'decimal(10, 2)'
fixed: false
unsigned: false
primary: true
autoincrement: false
finrango:
type: 'decimal(10, 2)'
fixed: false
unsigned: false
primary: true
autoincrement: false
precio:
type: 'decimal(10, 2)'
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
MetodoEnvio:
local: idmetodo
foreign: id
type: one
这是生成此架构的表的 SQL 定义:
CREATE TABLE IF NOT EXISTS `sawpruebaTienda`.`PrecioEnvio` (
`idMetodo` INT UNSIGNED NOT NULL ,
`zona` INT(3) NOT NULL ,
`inicioRango` DECIMAL(10,2) NOT NULL COMMENT 'Marca el inicio del rango de peso para el cual este precio aplica.' ,
`finRango` DECIMAL(10,2) NULL COMMENT 'Marca el fin del rango de peso para el cual este precio aplica.' ,
`precio` DECIMAL(10,2) NOT NULL ,
PRIMARY KEY (`idMetodo`, `inicioRango`, `finRango`, `zona`) ,
INDEX `fk_PrecioEnvio_MetodoEnvio` (`idMetodo` ASC) ,
CONSTRAINT `fk_PrecioEnvio_MetodoEnvio`
FOREIGN KEY (`idMetodo` )
REFERENCES `sawpruebaTienda`.`MetodoEnvio` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
即使在架构中没有大写,inicioRango 和 finRango 字段也被正确解释。唯一的问题是当我尝试将NULL 值存储在finRango 上时。
我正在使用 MySQL!
感谢您的帮助!
【问题讨论】:
标签: mysql symfony1 doctrine fixtures