表单选择选项需要是REST API中的单个模型



说我的应用程序出售盒子,所以我的基本型号是一个框。

但是,我将有一个表单,它将为每个框特性(例如框颜色,框尺寸,框材料等)提供选项。

这些选项将是从我的API返回的资源。

由于这个原因,我想知道他们是否必须在MVC世界中成为个别模型。例如,要获取框颜色的表单选项,拥有诸如http://example.test/api/box-colors之类的特定端点是有意义的吗?

我的想法是,所有这些特征都将在同一模型下,并且可以从一个端点返回。这里最好的方法是什么?

您可以像box_colors,box_dimensions,box_materials等所提到的不同表一样。但是,我想这些值很少会更改。然后,您可以将它们组合到一个表中:

表: box_options

  • id:主键,自动增量
  • type:字符串或枚举,值可以为 box_colorbox_dimension etc
  • value:字符串,指定类型的值。

例如,如果要存储2个框颜色和2个框尺寸:

|id   |type         |value   |
|_____|_____________|________|
|1    |box_color    | red    |
|2    |box_color    | blue   |
|3    |box_dimension| 50X50  |
|4    |box_dimension| 70X70  |

在您的雄辩模型中:

<?php 
Class BoxOption extends Model{
    protected $table = 'box_options';
    const BOX_COLOR_TYPE = 'box_color';
    const BOX_DIMENSION_TYPE = 'box_dimension';
    const BOX_MATERIAL_TYPE = 'box_meterial';
    public function scopeColor($query){
        return $query->where('type', self::BOX_COLOR_TYPE);
    }
    public function scopeDimension($query){
        return $query->where('type', self::BOX_DIMENSION_TYPE);
    }
    public function scopeMaterial($query){
        return $query->where('type', self::BOX_MATERIAL_TYPE);
    }
}

然后您可以轻松获得这些:

<?php 
$colors = BoxOption::color()->get()->pluck('value');
$dimensions = BoxOption::dimension()->get()->pluck('value');
$materials = BoxOption::material()->get()->pluck('value');

最新更新