我正在开发一个应用程序,使用户能够配置一个网关(如PayPal,Authorize.net等)来处理特定的活动,但是,每个网关都有特定的字段,另一个。实体与自定义字段
在创建与特定Campaign一起使用的自定义GatewayConfiguration期间,字段的值是用户可以更改的唯一值。
我read about it,发现这样做的一个好方法是有一个表的字段,另一个为这些字段的值。事情是这样的:
------------ -- Gateway Table ------------ id 1 -------- -- GatewayField Table -------- id, gatewayId, name, label 1, 1, 'username', 'Gateway Username' 2, 1, 'password', 'Gateway Password' 3, 1, 'apiurl', 'Gateway Api URL' ----------- -- GatewayConfiguration Table ---------- id, gatewayId 1, 1 ------- -- GatewayFieldValue Table ------- gatewayConfigurationId, fieldId, value 1, 1, 'someUser' 1, 2, 'somePass' 1, 3, 'someUrl'
有没有太多的网关,它不会改变太多,因为用户不能添加新的网关,只需使用现有的,正因为如此,该GatewayField不也会改变。
这样做并不复杂吗?把所有的网关放在一张表上,例如使用JSON字段来定义这个网关接受哪些自定义字段,并且在GatewayConfiguration上只使用另一个JSON编码字段来设置自定义字段的值,不是更好吗? ?有更好的解决方案?
上面描述的EAV构造引入了相当复杂的问题,而没有提供任何以标准序列化格式对数据进行编码的实际好处。我会json_encode SOB并称之为一天。 – Orangepill