2016-06-26 95 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没问题,如果有帮助,您应该将我的答案标记为已接受 –