2013-03-06 54 views
1

我正在處理一個項目,我們使用視圖來創建另一個數據源但沒有匹配模型的系統之間的接口/圖層。這樣,在我的系統中,這些視圖實際上就是模型。一切工作完全沒有問題到現在爲止,除了這一部分:我該如何讓教條不要嘗試更新表格?

------------------------------- 
|Table |Table  |View | 
------------------------------- 
|Order > |OrderItem > |Item | 
------------------------------- 

Relation: Order (has many)> OrderItem (has many)> Item. 

我最近所面對它試圖保存整組表(訂單)的關係的問題。系統應該保存訂單及​​其項目(訂單項)。但不知何故保存結束hiting的項目模型的更新是一個視圖,並返回此錯誤,很明顯:

代碼:

$order->save(); 

錯誤:

Data manipulation operation not legal on this view : UPDATE ITEM (...) 

是否有辦法跟蹤這一點,強迫它不會發生,或將其設置爲只讀模式?

+0

Hi CesarScur。理解你的問題是相當困難的。你可能會添加一些示例代碼?也是這個PHP?那麼可能將它標記爲PHP,因爲它是一個更受歡迎的標籤 - 以獲得更多關注。 – 2013-03-06 15:52:06

+0

添加了標籤TY。我怎樣才能讓事情更清楚? – CesarScur 2013-03-06 16:24:09

回答

1

當視圖由來自不同表格的元素組成時,會在mysql中發生此錯誤。

如果您編輯同一個表中的列,那麼可以,但是如果同一個查詢嘗試編輯不同表的列,則會出現錯誤。

你還在使用Doctrine 1.2嗎? 我認爲使用視圖與學說棘手Link

也錯誤可以來自你宣佈對實體關係的方式:

有: 訂單多到許多OrderItem的多到一個項目。

您應該確保採取關係OrderItem>項目是unidirectional,並且OrderItem是擁有方。

+0

我使用oracle作爲db。我看到doctrine_view的東西,但在我看來,這個視圖實際上是一個模型。我有附加的業務規則。使用數據庫視圖只是一種連接其他系統的方法。我可以使用一個過程來提供一個常規的表,但問題會變成:**我不希望教條更新這個表**。 我的描述確實是錯誤的,它有很多=/ – CesarScur 2013-03-07 11:45:08

+0

好的,但你得到的錯誤是因爲教義是綁定編輯視圖我一種不被Oracle允許的方式。這裏是錯誤原因和解決方案:http://ora-01732.ora-code.com/。 – bleuscyther 2013-03-07 16:44:10

+0

oyu可以在save()之前發佈進程嗎? – bleuscyther 2013-03-07 16:50:06

相關問題