2016-07-10 34 views
0

Eloquentマイグレーションには列の既定値が含まれており、モデルの作成時にその既定値が実際にデータベースに設定されています。しかし、Eloquentはこの値を知らないようで、nullを返します。Laravel Eloquentデフォルトで属性が設定されていません

移行:データベースで

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

、役割の値が実際に0ですが、$user->getAttributes()を呼び出すときに(何らかの形で値がnullに設定されているので、可能性が高い)role列は存在すらしていません。

私はこの仕事をするために何が欠けていますか?実際に使用可能なデフォルト値を正しく設定するにはどうすればよいですか?

答えて

0

私は推測できますが、Userモデルのroleリレーションシップも作成したと思います。そのため、nullが返されています。

public function up() 
{ 
    Schema::create('users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->string('email')->unique(); 
     $table->string('password'); 
     $table->unsignedInterger('role_id')->nullable()->default(null); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 
} 
:使用することを推奨されるだろう、ここで例えばあなたは、列との関係に同じ名前を使用することはありませんし、任意のフィールドが実際に他のテーブルへの外部キーである場合は、このテーブルの主キーのsufixを追加する必要がありますので、

上記のように、ここではこの列の種類にいくつか余分な変更を加えることができます。

+0

実際に、私はどんな関係を作成していません。私は 'artisan make:auth'以外のlaravelを新しくインストールした後、実際に何もしなかったので、移行にこのフィールドを追加しました。 – tam5

0

デフォルトLaravelのユーザーの移行とモデルを使用している場合は、あなたのUserモデルに割り当て可能な塊としての役割」列を追加

protected $fillable = ['name', 'email', 'password', 'role']; 
関連する問題