У меня есть простая модель parent-child / header-line в моем проекте.Проблема в том, что он создает циклические отношения или что-то, и не позволяет мне сохранить родителя без ребенка!Обнаружение отношений отключено!
detect_relations: false
...
BillHeader:
package: Billing
tableName: Bill_Headers
actAs:
SoftDelete: ~
columns:
id:
type: integer(8)
primary: true
notnull: true
autoincrement: true
....
BillLine:
package: Billing
tableName: Bill_Lines
actAs:
SoftDelete: ~
columns:
id:
type: integer(8)
primary: true
notnull: true
autoincrement: true
bill_header_id:
type: integer(8)
notnull: true
relations:
Bill_Header:
class: BillHeader
local: bill_header_id
foreign: id
foreignAlias: Bill_Lines
type: one
при первом сохранении родителя: $billHeader->save();
выдает ошибку: SQLSTATE [HY000]: общая ошибка: 1452 Не удаетсядобавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (sokidb
. bill_headers
, CONSTRAINT Bill_Headers_id_Bill_Lines_bill_header_id
FOREIGN KEY (id
) ССЫЛКИ bill_lines
(bill_header_id
))
, когда я $billHeader->Bill_Lines[] = $billLine;
выдает ошибку: Добавление не поддерживается для BillLine
Строка не будет сохранена без родителя, поэтому я даже не могу сделать $billHeader->link('Bill_Lines', $billLines);
$billHeader->Bill_Lines = $billLines;
выдает ошибку Не удалось вызвать Doctrine_Core:: set (), второй аргумент должен быть экземпляром Doctrine_Collection при установке ссылок «один ко многим».
Если я отбрасываю связь, сделайте $billHeader->save();
, тогда $billHeader->id
возвращается пустым.Так что это тоже не работает!
Интересно, есть ли 6-й способ сделать это ???: (
Я устал думать об этой проблеме, кажется, что нет никакого решения. Почти 3 дня на это, и теперь подсказка! Это приводит меня к самоубийству! Почему это поведение? Поможет ли, если столMyIsam вместо InnoDB?
Любая помощь по этому вопросу высоко ценится! Заранее спасибо.