我目前正在试验 Eloquent ORM,并且正在研究在应用程序中动态建模对象的可能性。
假设我有一个形状模型。
形状可以是正方形、圆形、三角形、矩形、五边形、六边形等...
所有形状都有相似之处,但有些形状具有不同的属性。
我想做的是使mysql 数据库表更通用,例如创建一个名为shapes 的表。
形状表:
id:integer
name:string
width:integer
height:integer
radius:integer
sides:integer
外形型号:
$rulesCircle = ['sides'=>'required', 'radius'=>'required']
$rulesSquare = ['height'=>'required', 'sides' => 'required']
$rulesRectangle = ['height'=>'required', 'width' => 'required', sides' => 'required']
现在让我们假设会有一个表单要求用户选择和指定形状的尺寸。
假设用户选择圆形,我们需要使用正确的验证规则。
这听起来像是一个愚蠢的例子,但我只是出于实验原因而研究这个。
这样做的正确方法是:
- 使用具有不同验证规则(if / else 语句)的形状模型来选择正确的验证规则
- 对所有通用形状使用形状模型,这些形状包含所有人共有的特征(例如名称和边)和正方形/圆形/矩形模型,它们扩展了形状模型但都引用了相同的形状 mysql 表
- 其他
以上可能吗?有没有更好的方法来解决上述问题?是否有最佳实践方法可以做到这一点?是否有针对上述要求的特定术语?