Ошибка сегментации схемы доктрины Symfony - PullRequest
2 голосов
/ 26 февраля 2010

Я настраиваю свой первый проект Symfony, и у меня возникают проблемы со схемой. Я не уверен, что пойду правильно.

У меня проблема с двумя моими уроками. У меня есть клиенты, у которых может быть много контактов, один из контактов должен быть выбран в качестве контакта в счете. Это моя схема:

NativeClient:
  actAs: { Timestampable: ~ }
  columns:
    name:                { type: string(255), notnull: true }
    address:             { type: string(255) }
    postcode:            { type: string(9) }
    tel:                 { type: string(50) }
    fax:                 { type: string(50) }
    website:             { type: string(255) }
    client_status_id:    { type: integer, notnull: true, default: 0 }
    priority:            { type: boolean, notnull: true, default: 0 }
    invoice_contact_id:  { type: integer }
    invoice_method_id:   { type: integer }
  relations:
    NativeContact:       { local: invoice_contact_id, foreign: id, foreignAlias: NativeInvoiceContacts }
    NativeClientStatus:  { local: client_status_id, foreign: id, foreignAlias: NativeContacts }
    NativeInvoiceMethod: { local: invoice_method_id, foreign: id, foreignAlias: NativeClientStatuses }


NativeContact:
  actAs: { Timestampable: ~ }
  columns:
    client_id:          { type: integer, notnull: true }
    name:               { type: string(255), notnull: true }
    position:           { type: string(255) }
    tel:                { type: string(50), notnull: true }
    mobile:             { type: string(50) }
    email:              { type: string(255) }
  relations:
    NativeClient:       { onDelete: CASCADE, local: client_id, foreign: id, foreignAlias: NativeClients } 

NativeClientStatus:
  actAs: { Timestampable: ~ }
  columns:
    name:               { type: string(255), notnull: true }

NativeInvoiceMethod:
  actAs: { Timestampable: ~ }
  columns:
    name:               { type: string(255), notnull: true }

Если я удаляю следующую строку (и связанные с ней приборы), она работает, в противном случае я получаю ошибку сегментации.

NativeContact:       { local: invoice_contact_id, foreign: id, foreignAlias: NativeInvoiceContacts }

Может ли это быть в цикле? Пытаетесь ссылаться на Клиента и Контакт снова и снова? Любая помощь будет принята с благодарностью! Спасибо!

Даррен

Ответы [ 2 ]

2 голосов
/ 06 августа 2013

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

Попробуйте указать --env = [ваш env], и это может просто сработать - для меня.

0 голосов
/ 27 февраля 2010

Даррен, кажется, что вы определяете отношения на обоих концах, используя противоречивые критерии ...

NativeContact:       { local: invoice_contact_id, foreign: id, foreignAlias: NativeInvoiceContacts }

... отношение между "invoice_contact_id" и необъявленным "id" PK в NativeContact.

 NativeClient:       { onDelete: CASCADE, local: client_id, foreign: id, foreignAlias: NativeClients } 

... такое же отношение существует между "client_id" и необъявленным PK "id" в NativeClient.

Лично я определяю их только в одном конце, и пусть Doctrine обрабатывает все остальное,но это зависит от того, чего вы пытаетесь достичь здесь.Если ОДИН клиент имеет МНОГИЕ контакты, вы можете удалить второе объявление и определить отношение только в таблице клиентов и добавить «type: many, foreignType: one», чтобы указать, что это отношение «один ко многим».

...