Вы можете иметь разные таблицы, как вы упомянули для box_colors, box_dimensions, box_materials и т. Д. Однако, я полагаю, эти значения будут меняться очень редко.Вы можете объединить их в одну таблицу:
Таблица: box_options
:
id
: первичный ключ, автоинкремент type
: строкаили enum, значения могут быть 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');