laravel-4 - 用户、购物车和产品的 Eloquent 关系

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

我想问一下UserCartProduct的 Eloquent 关系。 User 有一个 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 {

    //
}

我的数据库表结构如下:

用户

- 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/

相关文章:

php - Laravel 4 使用数据从 Controller 向外部 URL 发出发布请求

php - 在 Laravel 表单提交上调用 Controller 函数

拉维尔 5.6。 JSONb 列。计数数组

php - SQLSTATE[HY000] [2002] 连接尝试失败.. - 尝试从本地连接到远程服务器时

php - 将 MySQL 查询转换为 Laravel 4.2 查询

laravel - 如何在命令行上更改 Laravel 输出颜色?

php - 我如何按日期对查询进行排序和分组,并将它们分组到 Laravel 中的数组中

php - Laravel 群发改 Eloquent

codeigniter - 如何使 laravel 比 codeigniter 更快的页面加载

php - 如何使用单个 Laravel 代码实例配置和运行具有各自数据库的多个网站