2012-05-09 24 views
0

我正在將一個我手工製作的舊應用程序改寫成CakePHP 2.0,並且遇到了這個舊的,不斷重複的模型設計難題。如何正確地擴展CakePHP中的數據?

這是目標設計:

  • 訂單有許多OrderEntries
  • 訂單條目具有字段[量,類型]
  • ProductEntry延伸訂單條目與字段[PRODUCT_ID,數量,重量]
  • ShipmentEntry使用字段[total_weight,country_id,城市,地址等]擴展OrderEntry
  • DiscountEntry使用字段[discount_code,parent_order_id,active等]擴展OrderEntry

編輯:從根本上代替新知識簡化問題

所以基本上,我需要從蛋糕這個模型結構:

Order  1:m OrderEntry 
OrderEntry 1:1 ProductEntry 
OrderEntry 1:1 ShipmentEntry 
OrderEntry 1:1 DiscountEntry 

最後3個聯應該是非 - 識別。爲了更準確,一個OrderEntry記錄可以與三個子模型中的一個具有正好一個關係。

這可以通過使用名爲OrderEntry的訂單和所有3個XxxEntry模型之間的連接表來實現,但是這也意味着order_entries表應該再有3個外鍵字段:

  • product_entry_id
  • shipment_entry_id
  • discount_entry_id

這是迄今爲止我所見過的最好的解決方案,但它並不理想,因爲有一個Entry可能會被關聯編輯許多訂單,這將是一個錯誤。此外,一個joinTable持有3個外鍵(因此有3個關聯模型),它們不能爲「NOT NULL」,因爲只有一個應該被填充,而其他2個對於每個記錄都保留爲空。

總之,擁有一個基本模型的最佳實踐是什麼?這個模型可以通過幾個不同的模型擴展自己的表格?

回答

0

我不知道,如果這是你在找什麼,但有一個蛋糕實體插件,可能是值得一看:https://github.com/kanshin/CakeEntity

+0

這似乎是一個偉大的插件。我認爲Cake是一個很大的缺點,不會將數據視爲對象,從OOP的角度來看這會更直觀。但我不確定這是否解決了我的問題。無論如何,我確定這個插件可以在我未來的開發中找到用處! :) –