使用doctrine fixtures(symfony)插入null值

时间:2011-08-31 09:07:55

标签: mysql symfony1 doctrine fixtures

我的问题非常简单。我有这个模型,我想在其中一个字段(finRango)中插入一个空值的记录,使用doctrine 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(在特定情况下我需要它为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;

即使在架构中没有大写,也可以正确解释字段inicioRangofinRango。唯一的问题是当我尝试将NULL值存储在finRango上时。

我正在使用MySQL!

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

也许这有效:

fila41_zona5:
    MetodoEnvio: dhl
    zona: 5
    inicioRango: 20.00
    finRango: ~
    precio: 7.15

答案 1 :(得分:0)

如果将默认值设置为NULL,该怎么办?

  default: null
  notnull: false