假设我的应用程序销售盒子,所以我的基本模型是盒子。
但是,我会有一个表格,该表格将为每个包装盒特征(例如包装盒颜色,包装盒尺寸,包装盒材料等)提供选择选项。
这些选项将是从我的API返回的资源。
由于这个原因,我想知道在MVC世界中它们是否也必须是单独的模型。例如,要获取框颜色的表单选项,是否有一个特定的端点(例如http://example.test/api/box-colors等)有意义吗?
我的想法是所有这些特征都将在同一模型下,并且可以从一个端点返回。最好的方法是什么?
答案 0 :(得分:0)
您可以为box_colors,box_dimensions,box_materials等使用不同的表。但是,我想这些值很少会改变。您可以将它们合并到一个表中:
表格:box_options
:
id
:主键,自动递增type
:字符串或枚举,值可以为box_color
,box_dimension
等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');