存储多个模型使用的静态数组

时间:2019-01-23 13:16:03

标签: php laravel laravel-5

我有一个用Laravel 5编写的应用程序。我有一个模型Product,它使用表products

我要在表中存储产品尺寸。目前只有两种尺寸:ML代表中号和大号。

管理员用户可以更新大小,因此我将对此进行下拉。我的问题是;存储尺寸数据的最佳方法是什么?

  1. 为产品模型添加静态数组
  2. 使用具有关系的数据库创建尺寸模型
  3. 创建一个没有数据库而是一个静态数组的大小模型
  4. 将数组添加到配置文件

可能会引入更多尺寸,其他型号也会使用它们。我认为将其作为静态数组添加到Product模型中很好。

2 个答案:

答案 0 :(得分:0)

我将创建一个ProductSize模型并相应地定义其关系。

class Product extends Model
{
    public function sizes()
    {
        return $this->hasMany(ProductSize::class); 
    }
}

class ProductSize extends Model
{
    public function product()
    {
        return $this->belongsTo(Product::class); 
    }
}

要访问产品的尺寸,您可以执行以下操作:

Product::find(1)->sizes; 

我不知道您的用例,我想虽然它可以与数组一起使用,但这样做没有任何意义。

此外,并非所有尺寸的产品都可用。您将如何处理带有阵列的这种情况?此外,将内容保留在数据库中使查询,生成报告等变得更加容易。

答案 1 :(得分:0)

根据您的目标,您可以创建以下两个模型并为其建立关系。

class Product extends Model
{
    //You have only one size for each product
    public function size()
    {
        return $this->belongsTo(Size::class);
    }
}

class Size extends Model
{
    public function products()
    {
        return $this->hasMany(Product::class);
    }
}