Php 如何设置列可以';不能是空字符串吗?拉维尔
我想禁止在数据库中保存空用户,并使用空字符串名称、电子邮件、电话。我想测试一下 我的迁移:Php 如何设置列可以';不能是空字符串吗?拉维尔,php,laravel,migration,Php,Laravel,Migration,我想禁止在数据库中保存空用户,并使用空字符串名称、电子邮件、电话。我想测试一下 我的迁移: public function up() { Schema::create('user1s', function (Blueprint $table) { $table->increments('id'); $table->string("name"); $table->string("email"); $table
public function up()
{
Schema::create('user1s', function (Blueprint $table) {
$table->increments('id');
$table->string("name");
$table->string("email");
$table->string("phone_number");
$table->timestamps();
});
}
PageController
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');
}
当我想使用此测试进行测试时,它会在数据库中保存一个空用户并返回错误。。。。。。真是假
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' ,
]);
如果您坚持甚至不能用空字符串保存模型,您可以通过模型事件来实现-
要添加约束,可以将以下代码添加到User1.php
protected static function boot()
{
parent::boot();
static::saving(function($u) {
if(empty($u->name)) {
return false;
}
});
}
(我只对非空名称实施了约束。您可以对电子邮件地址和电话号码实施相同的约束。)您不能为字符串设置最小长度约束(至少在MySQL中) 在这里,您可以在验证过程中通过这些约束实现一个最小长度约束
$this->validate($request , [
'name' =>'required|min:1' ,
'email' =>'required' ,
'phone_number' =>'required' ,
]);
如果您坚持甚至不能用空字符串保存模型,您可以通过模型事件来实现-
要添加约束,可以将以下代码添加到User1.php
protected static function boot()
{
parent::boot();
static::saving(function($u) {
if(empty($u->name)) {
return false;
}
});
}
(我只对非空名称实施了约束。您可以对电子邮件地址和电话号码实施相同的约束。)