2013-07-24 17 views
1

我正在尋找一個簡單的解決方案來自動生成Cakephp中的數據庫約束模型中的驗證規則,因爲我不想用蛋糕烘烤手工製作所有這些。所以例如如果數據庫中的字段存在NOT NULL約束,則應爲該字段創建一個「非空」驗證規則。Cakephp從MySQL數據庫約束中自動生成驗證代碼

那麼有沒有一種工具可以做這種事情?

回答

3

CakePHP默認不支持這個,但我喜歡這個想法。

但是你可以實現利用 重載AppModel :: __結構() ,將代碼添加到AppModel :: beforeValidate()回調,使用CakeSchema的模型使用表格和環比的架構加載架構它會立即返回並建立規則,並將它們設置爲$ this-> validate。

如果你不想要一個特定的模型,那麼你可以添加另一個屬性,如boolean autoValidationRules。此外,請檢查是否尚未設置「空」,並且不會自動覆蓋或合併它,這取決於您的需求。

編輯:試試這個行爲,我只是把它砍在一起,因爲我喜歡這個主意。今晚晚些時候會添加一個單元測試。

https://github.com/burzum/BzUtils/blob/develop/Model/Behavior/AutoValidateBehavior.php

+1

beforeValidate可能是更好的建議(或實施beforeValidate的行爲) - 即,直到需要時才做任何事情。 +1。 – AD7six

+0

的確,由於某種原因,構造函數是我閱讀本文時首先想到的。 – burzum

0

確實沒有內置的CakePHP中的功能這一點。

否則,如果你不想使用控制檯,你可以使用一個在線工具,允許你設計你的應用程序:模型,關係和驗證規則,然後自動生成一個SQL文件,列上有正確的約束,您的模型具有字段,控制器和視圖的相應驗證規則:Online Cake Bake

你不會去做你想要的東西,但至少你可以同時設計你的數據庫的約束和你的驗證規則,這樣可以節省很多時間。