建议

问题描述:

这里是我想要做的:建议

User: 
id 
first_name 
second_name 
gender 

和我做一个PHP对象“用户”,我修改了“用户”的属性,我更新数据库,例如,

$aUser->setGender("M"); 
在设置性别

,我执行使用PHP的更新语句......但我有一个问题在这里,如果用户只有4个属性,它是确定我写一个一个。但是,如果对象有很多属性,我需要写更多的更新语句....(我可以编写一个通用更新语句,无论我更改哪个属性,我都更新所有属性一次,但我认为这是没有意义的所以......)我怎样才能简化呢?谢谢。

+0

我自己通过在适当的时候调用'save()'方法来做到这一点,但是可能有更好的答案。 – Brad

+0

我想说,在每次更新属性后更新数据库效率极低。相反,我建议你在对象中有一个“更新”方法,并在设置所有属性时调用它。这样,您只有1个数据库调用使其效率更高。 –

+0

确实,但是否不需要再次更新非修改属性? – Tattat

问题的评论显示:您应该不时地使用像save()这样的方法,而不是在每次更改任何内容时查询数据库。

就我个人而言,即使相应的属性没有更改,也不会在更新每列时发现问题。但是,您可以将原始值保存在另一个(数组)属性中,然后将这些值相互比较。

你可以像下面这样的函数(类似于人所提出的建议):

$ aUser-> setValues方法(阵列( “性别”=> “M”, “FIRST_NAME”=> “史蒂夫”));

然后,该函数可以引用您的对象变量来检查它们是否不同并运行更新。或者只是使用相同的值运行更新。

不要重新发明*。使用对象关系映射器。你所做的事听起来像是最好的RedBean