2016-06-29 16 views
1

私は移行を行っていますが、いくつかのフィールドをnullにできないようにします。簡単にするために、例としてLaravelに付属のユーザーの移行を使用します。そのフィールドのEloquentはnull以外のフィールドに値を保存していません

Schema::create('users', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('name'); 
    $table->string('email')->unique(); 
    $table->string('password'); 
    $table->rememberToken(); 
    $table->timestamps(); 
}); 

なしnullablesませんが、私は作る場合:

$user = new User(); 
$user->save(); 
User::all(); 

それは

私はせずにレコードを保存することができた場合NULL可能()修飾子のポイントがある
Illuminate\Database\Eloquent\Collection {#639 
    all: [ 
     App\User {#640 
     id: "1", 
     name: "", 
     email: "", 
     created_at: "2016-06-29 15:51:01", 
     updated_at: "2016-06-29 15:51:01", 
     }, 
    ], 
    } 

を返します。 nullでないフィールドのデータ?

答えて

3

まあ、それらは空ですが、期待通りに空ではありません。コントローラでは

:あなたはそれを強制するために検証ルールを使用する必要があり、空のエントリを避けるために

public function store(Request $request) 
{ 
    $this->validate($request, [ 
     'name' => 'required|min:4', 
     'email' => 'required|email', 
     'password' => 'required|min:8', 
    ]); 

    $user = User::create($request->only('name', 'email', 'password')); 

    return redirect()->route('users.show', $user->id); 
} 
1

私はVARCHARフィールドは「」としてデフォルト値を持っていると思います。 Blueprint $tablestringは、varcharcolumnを生成する。

は、あなたにはNULL可能列は使用しないで設定したい場合は->nullable(false)

Schema::create('users', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('name')->nullable(false); 
    $table->string('email')->unique()->nullable(false); 
    $table->string('password')->nullable(false); 
    $table->rememberToken(); 
    $table->timestamps(); 
}); 
関連する問題