我想问一下User
、Cart
和Product
的 Eloquent 关系。 User
有一个 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 {
//
}
我的数据库表结构如下:
用户
- id
- email
- username
- password
购物车
- id
- user_id
- product_id
- quantity
产品
- id
- name
- price
这是正确的吗?
最佳答案
不,这是不正确的。
users
表是正确的,但是对于 carts
表,您不应该有 product_id
列,因为它是一对多关系(购物车可以有多个产品),因此您的 carts
表应如下所示:
- 编号
- 用户编号
- 数量
但进一步看,您可能不希望购物车和产品之间存在一对多关系,因为产品可能对所有用户都是通用的,因此您需要多对多关系。
所以你应该定义一个额外的表(数据透视表):
cart_product
- cart_id
- product_id
你应该像这样改变 Cart
模型中的 products
关系:
public function products()
{
return $this->belongsToMany(\App\Product::class);
}
您显然应该为您的 Product
模型创建相同的反向关系,以备不时之需。
关于laravel-4 - 用户、购物车和产品的 Eloquent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38036291/