2012-11-16 88 views
1

使用Postgres的限制,我們正在遷移到PostgreSQL數據庫,我們希望用盡可能多的約束檢查成爲可能。問題是,當我想驗證Web表單時,有很多難以維護的重複代碼。是否有可能使用這個數據庫檢查也用於Web表單驗證?該應用程序是用PHP編寫的,數據庫層是pomm。目標是獲取所有填充的值,將其發送到數據庫並獲取所有失敗的約束,而無需在PHP應用程序中定義其他規則。我怎樣才能達到最簡單的方式?的表單驗證

回答

1

嘛,數據庫約束來這裏是爲了確保您的數據存儲以一致的方式。表單驗證可能有不同的規則,具體取決於功能上下文。 Imho依賴數據庫約束來驗證表單不是一個好主意(我使用Symfony validator組件)。

從一個純技術角度出發,如果你想使用的數據庫作爲驗證層,最困難的部分是提取數據的原因無法插入/更新。即使你可以從異常消息中獲得這些信息,這將逐個驗證字段,直到所有字段都正常。

如果你還想跟它一起去,趕上Pomm\Exception拋出,並從它得到SQL error代碼。

希望它有幫助。如果您有多個應用程序寫入到數據庫

+0

數據庫的約束是有用的。正如所提到的@greg最好使用您的Web框架進行表單驗證。數據庫驗證應該是最後的手段。 – mys

+0

謝謝,我認爲這將是非常聰明的許多邏輯移動儘可能到數據庫中,但你說得對,形式通常需要比數據本身相當不同的驗證。有很多應用程序都寫入我們的數據庫,所以儘管仍然需要約束。 –

+0

@PeterKrejci true!我使用的數據庫只有邏輯不隨時間(slugification,身份驗證,數據排序...) – greg