2015-07-19 112 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