2015-07-19 110 views
2

我在Laravel的驗證規則數據庫的限制:Laravel驗證 - 連接到數據庫

$rules = [ 
    'customer_id' => 'required|id|unique:customers|min:1', 
]; 

// (...) 

$validator = Validator::make($dataToSave, $rules); 

在本地機器上,測試通過,一切都還好吧。但是在沒有安裝數據庫的構建服務器(Bamboo)上,PHPUnit失敗,因爲它無法連接到數據庫。當我刪除unique:customers規則時,測試通過。

我該如何重構代碼,所以phpunit測試會通過,而不考慮環境?

+0

您是否在默認數據庫上使用costomers表? – KTAnj

+0

是的,在數據​​庫中有表'客戶'。在本地機器上測試通過,但在根本沒有數據庫的構建服務器上,測試失敗。測試不應該傳遞到每個環境? – user1292810

+0

沒有數據庫如何唯一:客戶驗證通過? – KTAnj

回答

1

使用unique規則你必須有數據庫連接。沒有變種。 它檢查數據庫中的行是唯一的值。

本地機器正常 - 因爲你有連接。 在遠程不行 - 因爲你沒有連接。

只需在您的Bamboo上安裝數據庫和遷移即可。 否則刪除unique:customers|將破壞您的應用程序邏輯。

但是。如果customerscustomer_id被定義爲數據庫表中的唯一密鑰,您可以刪除此unique:customers|並保存數據時發現錯誤(如果不是唯一值傳遞)

+0

不應該驗證器以某種方式重構/抽象到另一個類,所以我可以在PHPunit中模擬驗證器的行爲? – user1292810

+0

so ..這裏是\ vendor \ laravel \ framework \ src \ Illuminate \ Validation \ Validator :: validateUnique – M0rtiis