用户,购物车和产品雄辩的关系

时间:2016-06-26 07:45:03

标签: laravel-4 laravel-5 eloquent laravel-5.1 laravel-5.2

我想问一下UserCartProduct雄辩的关系。 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

这是对的吗?

1 个答案:

答案 0 :(得分: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模型创建相同的反向关系,以备不时之需。