2016-06-26 6 views
0

私はUserCartProductという雄弁な関係について質問したいと思います。 User hasOne CartおよびCartは、多くの場合、Productを持つことができます。ユーザー、カート、製品間違った関係

users

- id 
- email 
- username 
- password 

carts

- id 
- user_id 
- product_id 
- quantity 

products

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 { 

    // 
} 

私はデータベースのテーブルは次のように構造化されています

これは間違いありませんか?

答えて

0

いいえ、正しくありません。

usersそれは多くの関係(カートが複数の製品を持つことができます)への1つですので、あなたのcarts表は次のようになりますので、表が正しいですが、cartsテーブルのためにあなたがproduct_id列を持つべきではありません。

  • ID
  • のuser_id

しかし、おそらくあなたがワンませんさらに探したぶん製品はすべてのユーザーに共通しているので、カートと製品の1対1の関係は多岐にわたるので、多対多の関係が必要です。

ですから、1つの余分のテーブル(ピボットテーブル)を定義する必要があります

cart_product

- cart_id 
- product_id 

、あなたはそうのようなCartモデルでproducts関係を変更する必要があります。

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

あなたは明らかにすべき必要に応じてProductモデルと同じ逆の関係を作成します。

+0

ありがとう@Marcin –

+0

@TakeOver助けがあれば、私の答えは受け入れられたとマークする必要があります –

関連する問題