2016-06-26 36 views
0

我想問一下關於User,CartProduct雄辯的關係。 User hasOne CartCart可以有許多Product用戶,購物車和產品雄辯關係

class User { 

    public function cart() 
    { 
     return $this->hasOne(App\Cart::class); 
    } 
} 



class Cart { 

    public function user() 
    { 
     return $this->belongsTo(App\User::class); 
    } 

    public function products() 
    { 
     return $this->hasMany(App\Product::class); 
    } 
} 



class Product { 

    // 
} 

我有數據庫表結構類似:

users

- id 
- email 
- username 
- password 

carts

- id 
- user_id 
- product_id 
- quantity 

products

- id 
- name 
- price 

這是正確的嗎?

回答

0

不,這是不正確的。

users表是正確的,但對於carts表你不應該有product_id列,因爲它是一對多的關係(車可以有多個產品),所以你carts表應該是這樣的:

  • ID
  • USER_ID

但進一步尋找可能你不婉在購物車和產品之間存在一對多的關係,因爲產品對於所有用戶來說可能是共同的,所以你需要多對多的關係。

所以,你應該定義一個額外的表(數據透視表):

cart_product

- cart_id 
- product_id 

,你應該改變products關係Cart模型像這樣:

public function products() 
{ 
    return $this->belongsToMany(\App\Product::class); 
} 

很顯然你應該爲您的Product模型創建相同的反向關係,以備需要時使用。

+0

謝謝@Marcin –

+0

@TakeOver沒問題,如果有幫助,您應該將我的答案標記爲已接受 –