2016-07-02 9 views
0

私はがデータベースに空の文字列名、電子メール、電話で空のユーザを保存することを禁じたいと思っています。そして私はそれをテストしたい。列を空の文字列にすることはできません。 Laravel

マイ移行

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 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 testnonEmptyInput(){ 

    $user1=New User1; 
    $user1->name=""; 
    $user1->email=""; 
    $user1->phone_number=""; 

    $this->assertFalse($user1->save()); 
} 

答えて

1

文字列に少なくともlength制約を設定することはできません(atleast MySQLでは)。

ここでは、このような方法を使用して検証中に制約を使用して最小長制約を実装できます。

$this->validate($request , [ 
      'name' =>'required|min:1' , 
      'email' =>'required' , 
      'phone_number' =>'required' , 
      ]); 

あなたも空の文字列でモデルを保存することができないと主張した場合、あなたはモデルイベントを通じてこれを実装することができます - https://laravel.com/docs/5.0/eloquent#model-events

制約を追加するには、ユーザー1に次のコードを追加することができます.PHPは、

protected static function boot() 
{ 
    parent::boot(); 

    static::saving(function($u) { 
     if(empty($u->name)) { 
     return false; 
     } 
    }); 
} 

は(私は唯一の非空の名前の制約を実装しました。あなたは、電子メールアドレスと電話番号の制約を実装するための同じを推定することができます。)

関連する問題