用户、购物车和产品 Eloquent 关系
User, Cart and Products Eloquent Relationship
我想问一下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 {
//
}
我的数据库 table 结构如下:
users
- id
- email
- username
- password
carts
- id
- user_id
- product_id
- quantity
products
- id
- name
- price
这是正确的吗?
不,这不正确。
users
table 是正确的,但是对于 carts
table 你不应该有 product_id
列因为它是一对多关系(购物车可以有多种产品),因此您的 carts
table 应如下所示:
- id
- user_id
- 数量
但进一步看,您可能不希望购物车和产品之间存在一对多关系,因为产品可能对所有用户都是通用的,因此您需要多对多关系。
所以你应该定义一个额外的 table (pivot table):
cart_product
- cart_id
- product_id
您应该像这样更改 Cart
模型中的 products
关系:
public function products()
{
return $this->belongsToMany(\App\Product::class);
}
您显然应该为您的 Product
模型创建相同的反向关系,以备不时之需。
我想问一下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 {
//
}
我的数据库 table 结构如下:
users
- id
- email
- username
- password
carts
- id
- user_id
- product_id
- quantity
products
- id
- name
- price
这是正确的吗?
不,这不正确。
users
table 是正确的,但是对于 carts
table 你不应该有 product_id
列因为它是一对多关系(购物车可以有多种产品),因此您的 carts
table 应如下所示:
- id
- user_id
- 数量
但进一步看,您可能不希望购物车和产品之间存在一对多关系,因为产品可能对所有用户都是通用的,因此您需要多对多关系。
所以你应该定义一个额外的 table (pivot table):
cart_product
- cart_id
- product_id
您应该像这样更改 Cart
模型中的 products
关系:
public function products()
{
return $this->belongsToMany(\App\Product::class);
}
您显然应该为您的 Product
模型创建相同的反向关系,以备不时之需。