我正在將一個我手工製作的舊應用程序改寫成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個對於每個記錄都保留爲空。
總之,擁有一個基本模型的最佳實踐是什麼?這個模型可以通過幾個不同的模型擴展自己的表格?
這似乎是一個偉大的插件。我認爲Cake是一個很大的缺點,不會將數據視爲對象,從OOP的角度來看這會更直觀。但我不確定這是否解決了我的問題。無論如何,我確定這個插件可以在我未來的開發中找到用處! :) –