вставить нулевое значение, используя доктрины (symfony) - PullRequest
0 голосов
/ 31 августа 2011

мой вопрос очень прост.У меня есть эта модель, где я хочу вставить запись с нулевым значением в одно из полей (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

Я всегда получаю ноль (0,00) в finRango поле.Я определил свою схему из схемы базы данных, и это поле не определено с 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!

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 24 октября 2014

Что если установить значение по умолчанию NULL?

  default: null
  notnull: false
0 голосов
/ 31 августа 2011

Может быть, это работает:

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