我想禁止在数据库中保存空用户,并使用空字符串名称,电子邮件,电话。我想测试一下。
我的迁移:
public function up()
{
Schema::create('user1s', function (Blueprint $table) {
$table->increments('id');
$table->string("name");
$table->string("email");
$table->string("phone_number");
$table->timestamps();
});
}
页面控制器
public function store(Request $request)
{
$this->validate($request , [
'name' =>'required' ,
'email' =>'required' ,
'phone_number' =>'required' ,
]);
$user= new User1;
$user->name = $request->name;
$user->email = $request->email;
$user->phone_number = $request->phone_number;
$user->save();
return redirect('/thankyou');
}
当我想用该测试进行测试时,它将一个空用户保存在数据库中并返回错误……true为false
public function testnonEmptyInput(){
$user1=New User1;
$user1->name="";
$user1->email="";
$user1->phone_number="";
$this->assertFalse($user1->save());
}
您不能为字符串设置最小长度约束(在MySQL中至少是这样)。
在这里,您可以使用诸如此类的方法通过验证期间的约束来实现最小长度约束。
$this->validate($request , [
'name' =>'required|min:1' ,
'email' =>'required' ,
'phone_number' =>'required' ,
]);
如果您坚持甚至无法使用空字符串保存模型,则可以通过模型事件-https: //laravel.com/docs/5.0/eloquent#model-events来实现
要添加约束,可以将以下代码添加到User1.php,
protected static function boot()
{
parent::boot();
static::saving(function($u) {
if(empty($u->name)) {
return false;
}
});
}
(我仅实现了对非空名称的约束。您可以推断出相同的约束,以实现对电子邮件地址和电话号码的约束。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句