Как установить внешний ключ на ноль?(Symfony) - PullRequest
0 голосов
/ 29 ноября 2010

У меня есть форма с необязательным вводом, но я не могу проверить форму, если пользователь не заполнил ее, потому что это внешний ключ, а Doctrine показывает мне ошибку.

SQLSTATE[HY000]: General error: 1452 Cannot add or update a child row: a foreign key constraint fails (`logements`.`bail`, CONSTRAINT `bail_ibfk_3` FOREIGN KEY (`locataire2`) REFERENCES `locataire` (`nud`) ON DELETE CASCADE ON UPDATE CASCADE)

Я попытался в phpMyAdmin тот же запрос, и он работает правильно: я могу установить внешний ключ на ноль.

Итак, как мне установить внешний ключ на нуль и проверить правильность формы без ошибки Doctrine?

EDIT

Bail:
  connection: doctrine
  tableName: bail
  columns:
    id:
      type: integer(2)
      fixed: false
      unsigned: true
      primary: true
      autoincrement: true
    locataire1:
      type: string(20)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    locataire2:
      type: string(20)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    logement:
      type: integer(2)
      fixed: false
      unsigned: true
      primary: false
      notnull: false
      autoincrement: false
    datedeb:
      type: date(25)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    datefin:
      type: date(25)
      fixed: false
      unsigned: false
      primary: false
      default: '0000-00-00'
      notnull: false
      autoincrement: false
    colloc:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      default: '0'
      notnull: false
      autoincrement: false
    bailglissant:
      type: string(12)
      fixed: false
      unsigned: false
      primary: false
      default: 'Non spécifié'
      notnull: false
      autoincrement: false
  relations:
    Locataire:
      local: locataire1
      foreign: nud
      type: one
    Logement:
      local: logement
      foreign: id
      type: one
    Locataire_3:
      class: Locataire
      local: locataire2
      foreign: nud
      type: one

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Я не уверен, что это так, но для однозначных отношений вам нужно использовать объект Doctrine_Null, если вы хотите установить его в null:

$this->setLocataire2(new Doctrine_Null());

Возможно, эта проблема вызвана тем, что вы используете вместо select.

0 голосов
/ 29 марта 2011

Я решил проблему с помощью метода processValues ​​() (вызов save ()) для установки атрибутов в NULL.

...