建議

2011-07-05 49 views
2

這裏是我想要做的:建議

User: 
id 
first_name 
second_name 
gender 

和我做一個PHP對象「用戶」,我修改了「用戶」的屬性,我更新數據庫,例如,

$aUser->setGender("M"); 
在設置性別

,我執行使用PHP的更新語句......但我有一個問題在這裏,如果用戶只有4個屬性,它是確定我寫一個一個。但是,如果對象有很多屬性,我需要寫更多的更新語句....(我可以編寫一個通用更新語句,無論我更改哪個屬性,我都更新所有屬性一次,但我認爲這是沒有意義的所以......)我怎樣才能簡化呢?謝謝。

+0

我自己通過在適當的時候調用'save()'方法來做到這一點,但是可能有更好的答案。 – Brad

+0

我想說,在每次更新屬性後更新數據庫效率極低。相反,我建議你在對象中有一個「更新」方法,並在設置所有屬性時調用它。這樣,您只有1個數據庫調用使其效率更高。 –

+0

確實,但是否不需要再次更新非修改屬性? – Tattat

回答

1

問題的評論顯示:您應該不時地使用像save()這樣的方法,而不是在每次更改任何內容時查詢數據庫。

就我個人而言,即使相應的屬性沒有更改,也不會在更新每列時發現問題。但是,您可以將原始值保存在另一個(數組)屬性中,然後將這些值相互比較。

0

你可以像下面這樣的函數(類似於人所提出的建議):

$ aUser-> setValues方法(陣列( 「性別」=> 「M」, 「FIRST_NAME」=> 「史蒂夫」));

然後,該函數可以引用您的對象變量來檢查它們是否不同並運行更新。或者只是使用相同的值運行更新。

0

不要重新發明輪子。使用對象關係映射器。你所做的事聽起來像是最好的RedBean