Tak*_*ver 2 eloquent laravel-4 laravel-5 laravel-5.1
我想问一下User,Cart和Product雄辩的关系。hasOne和可以有很多User。CartCartProduct
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 {
//
}
Run Code Online (Sandbox Code Playgroud)
我的数据库表结构如下:
users
- id
- email
- username
- password
Run Code Online (Sandbox Code Playgroud)
carts
- id
- user_id
- product_id
- quantity
Run Code Online (Sandbox Code Playgroud)
products
- id
- name
- price
Run Code Online (Sandbox Code Playgroud)
它是否正确?
不,这是不正确的。
users表是正确的,但对于carts表,您不应该有product_id列,因为它是一对多关系(购物车可以有多个产品),所以您的carts表应该如下所示:
但进一步看,您可能不希望购物车和产品之间存在一对多的关系,因为产品可能对所有用户来说都是通用的,所以您需要多对多的关系。
因此,您应该定义一个额外的表(数据透视表):
cart_product
- cart_id
- product_id
Run Code Online (Sandbox Code Playgroud)
你应该像这样改变模型products中的关系:Cart
public function products()
{
return $this->belongsToMany(\App\Product::class);
}
Run Code Online (Sandbox Code Playgroud)
显然,您应该为您的Product模型创建相同的反向关系,以防您需要它。
| 归档时间: |
|
| 查看次数: |
6146 次 |
| 最近记录: |