【问题标题】:insert null value using doctrine fixtures (symfony)使用教义夹具(symfony)插入空值
【发布时间】: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;

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

我正在使用 MySQL!

感谢您的帮助!

【问题讨论】:

    标签: mysql symfony1 doctrine fixtures


    【解决方案1】:

    也许这行得通:

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

    【讨论】:

    • 也没有用。我也试过"NULL",问题中没有提到,但得到了相同的行为。还尝试在架构文件中为finRango 字段指定notnull: true,重建模型,加载固定装置但没有工作......还有其他想法吗?谢谢! =)
    【解决方案2】:

    如果将默认设置为 NULL 会怎样?

      default: null
      notnull: false
    

    【讨论】:

    • 嗨!我很久以前就没有在这个项目上工作,我现在无法测试你的答案......如果你自己测试过,并且你确定它有效,我接受你的答案没有问题。请告诉我。
    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多