2015-03-30 112 views
0

我有三個表的其他信息喜歡這樣的:Laravel - 在多對多關係

Car 
-id 
-name 
-production_start 
-etc 

Option 
-id 
-name 
-price 

Options_Cars 
-id_option 
-id_car 
-in_basic 

有了這樣的代碼:

class Cars extends Eloquent {  
    public function options() 
    { 
     return $this->belongsToMany('Options','options_cars','id_car','id_option'); 
    } 
} 

如何獲取in_basic領域視圖內的每個選項?

+0

'in_basic'專欄的目的是什麼 - 我不認爲它應該屬於它現在的位置,這可能是首先要問的正確問題。 – 2015-03-30 21:06:43

+0

@Barnabas表示一個選項是否包含在汽車 – Robus 2015-03-30 21:12:10

+0

的基本包裝中,這可能意味着它是否基本,這不是一個選項了?我明白了它將要去哪裏......我現在會提交一個答案,給你一個不同方法的想法。 – 2015-03-30 21:17:41

回答

1

我可能會擴展您的架構並添加另一個表來區分汽車的基本模型和添加額外功能的模型,但仍然將所有選項都保留爲構建模塊。因此,例如...

Car 
    -id 
    -name 
    -production_start 
    -etc 
Option 
    -id 
    -name 
    -price 
    -etc 
Cars_BasicOptions 
    -car_id 
    -option_id 
Cars_ExtraOptions 
    -car_id 
    -option_id 

但這也上方把我帶到了一個新的問題 - 作爲選項都有價格標籤,它不再是通用的。考慮將金屬塗裝作爲一種選擇 - 對於菲亞特Punto和梅賽德斯SLS-AMG,價格是否相同?我對此表示懷疑......因此,您認爲選擇這種方式可能並不適合這種通用方式。根據您的業務邏輯,它可以做這樣的事情會更合適:

Car 
    -id 
    -name 
    -production_start 
    -etc 
Option 
    -id 
    -car_id 
    -name 
    -price 
    -in_basic 
    -etc 

當然,如果你想單獨處理選項,您可以將其移動到不同的表,像...

Car 
    -id 
    -name 
    -production_start 
    -etc 
Option 
    -id 
    -name 
Car_Option 
    -car_id 
    -option_id 
    -price 
    -in_basic 
    -etc 

這可能更接近您最初的想法。幫助?