2010-07-20 40 views
0

我的項目中有一個簡單的父子/標題行模型。問題在於它創造了一種循環關係或某種東西,並且不讓我在沒有孩子的情況下拯救父母!檢測關係已關閉!使用Doctrine 1.2保存父/子標題/行

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 
  1. 當我第一次救母:$billHeader->save();給出了錯誤:SQLSTATE [HY000]:常規錯誤:1452無法添加或更新子行:外鍵約束失敗(sokidbbill_headers,約束Bill_Headers_id_Bill_Lines_bill_header_id外鍵(id)參考文獻bill_linesbill_header_id))

  2. 當我做$billHeader->Bill_Lines[] = $billLine; GI VES錯誤:不支持BillLine

  3. 該生產線將無法保存沒有父母,所以我甚至不能做$billHeader->link('Bill_Lines', $billLines);

  4. $billHeader->Bill_Lines = $billLines;添加給出了錯誤Couldn」調用Doctrine_Core :: set()時,第二個參數應該是設置一對多引用時Doctrine_Collection的一個實例。

  5. 如果我放棄的關係,做一個$billHeader->save();,然後 $billHeader->id返回空。所以那也行不通!

我不知道是否有第六種方法呢? :(

我厭倦了對這個問題的思考,似乎沒有解決方案,在這個和現在的線索上差不多3天了!它讓我自殺!爲什麼會這麼做?如果表是MyIsam,它會有所幫助嗎? ?InnoDB中的

任何幫助提前非常感謝 感謝

回答

1

某處有問題,你的架構約束:。

CONSTRAINT Bill_Headers_id_Bill_Lines_bill_header_id FOREIGN KEY (id) REFERENCES bill_lines (bill_header_id)) 

應該不存在BillHeader的ID應不是比爾的外鍵線。相反,應該從BillLine到BillHeader約束,是這樣的:

CONSTRAINT `Bill_Lines_header_id_Bill_Header_id` FOREIGN KEY (`bill_header_id`) REFERENCES `Bill_Header` (`id`) 

你對BillHeader可以補充說,約束定義的其他關係?無論如何,這裏的關鍵是要玩你的模式,直到約束朝着正確的方向前進。

+0

謝謝你的迴應傑里米。那麼,架構就在你面前! :)我試圖在BillHeader上定義關係,但仍然無效。 你提到的第二個關係也在創建,但第一個關係是意想不到的,並且產生了問題。我嘗試使用自動完成:false,但這似乎也不起作用! – Prasad 2010-07-21 10:07:41

+0

是的,關鍵的確是繼續玩Schema。 但我學到的一件事是,通過生成的SQL確實有幫助! – Prasad 2010-07-29 15:57:09

0

我經過內省後解決了它。其中一個屬性被標記爲PRIMARY。不知道爲什麼這個結果,但這是問題!

相關問題