我想问一下User
,Cart
和Product
雄辩的关系。 User
hasOne Cart
和Cart
可以有多个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 :(得分:0)
不,这不正确。
users
表是正确的,但对于carts
表,您不应该有product_id
列,因为它是一对多的关系(购物车可以有多个产品) ,所以你的carts
表应如下所示:
但是进一步看,你可能不希望推车和产品之间存在多对多的关系,因为产品可能对所有用户都很常见,所以你需要多对多的关系。
所以你应该定义一个额外的表(数据透视表):
cart_product
- cart_id
- product_id
您应该更改products
模型中的Cart
关系,如下所示:
public function products()
{
return $this->belongsToMany(\App\Product::class);
}
您显然应该为Product
模型创建相同的反向关系,以备不时之需。