Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何设置列可以';不能是空字符串吗?拉维尔_Php_Laravel_Migration - Fatal编程技术网

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;
      }
    });
}
(我只对非空名称实施了约束。您可以对电子邮件地址和电话号码实施相同的约束。)